@arbidocs/blocks 0.4.146 → 0.4.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConnectedNativeDocxComparison-3XQSINPQ.cjs +44 -0
- package/dist/ConnectedNativeDocxComparison-3XQSINPQ.cjs.map +1 -0
- package/dist/ConnectedNativeDocxComparison-XQSXVGHR.js +35 -0
- package/dist/ConnectedNativeDocxComparison-XQSXVGHR.js.map +1 -0
- package/dist/ConnectedNativeDocxEditor-IPEZDERL.js +33 -0
- package/dist/ConnectedNativeDocxEditor-IPEZDERL.js.map +1 -0
- package/dist/ConnectedNativeDocxEditor-OUWFMIPH.cjs +46 -0
- package/dist/ConnectedNativeDocxEditor-OUWFMIPH.cjs.map +1 -0
- package/dist/ConnectedStreamedWordArtifact-D5LSMDO4.cjs +44 -0
- package/dist/ConnectedStreamedWordArtifact-D5LSMDO4.cjs.map +1 -0
- package/dist/ConnectedStreamedWordArtifact-UZVNBKQB.js +35 -0
- package/dist/ConnectedStreamedWordArtifact-UZVNBKQB.js.map +1 -0
- package/dist/FactTextEditor-YESAU2IJ.js +25 -0
- package/dist/FactTextEditor-YESAU2IJ.js.map +1 -0
- package/dist/FactTextEditor-YUPBCTXK.cjs +27 -0
- package/dist/FactTextEditor-YUPBCTXK.cjs.map +1 -0
- package/dist/{NativeDocxEditor-BE2OEOTJ.cjs → NativeDocxEditor-5VBNM5I7.cjs} +8 -8
- package/dist/{NativeDocxEditor-BE2OEOTJ.cjs.map → NativeDocxEditor-5VBNM5I7.cjs.map} +1 -1
- package/dist/{NativeDocxEditor-KOPFMRYW.js → NativeDocxEditor-XT5ZLFGU.js} +4 -4
- package/dist/{NativeDocxEditor-KOPFMRYW.js.map → NativeDocxEditor-XT5ZLFGU.js.map} +1 -1
- package/dist/agents/index.cjs +265 -266
- package/dist/agents/index.js +8 -9
- package/dist/calendar/index.cjs +117 -125
- package/dist/calendar/index.d.ts +0 -1
- package/dist/calendar/index.js +1 -1
- package/dist/calls/index.cjs +3 -3
- package/dist/calls/index.js +2 -2
- package/dist/chat/index.cjs +78 -78
- package/dist/chat/index.js +3 -3
- package/dist/{chunk-2FL7QJKJ.js → chunk-265GOG4W.js} +3 -3
- package/dist/{chunk-2FL7QJKJ.js.map → chunk-265GOG4W.js.map} +1 -1
- package/dist/{chunk-IJST4EBM.js → chunk-3E2F4AHD.js} +8 -8
- package/dist/{chunk-IJST4EBM.js.map → chunk-3E2F4AHD.js.map} +1 -1
- package/dist/chunk-3FSXWVHW.cjs +5184 -0
- package/dist/chunk-3FSXWVHW.cjs.map +1 -0
- package/dist/{chunk-LPYEUD2D.cjs → chunk-4JNKXOFZ.cjs} +3 -3
- package/dist/{chunk-LPYEUD2D.cjs.map → chunk-4JNKXOFZ.cjs.map} +1 -1
- package/dist/{chunk-ODRHHWHY.cjs → chunk-4KMLM3GY.cjs} +4 -4
- package/dist/chunk-4KMLM3GY.cjs.map +1 -0
- package/dist/{chunk-MHFF5N65.cjs → chunk-757OYF6G.cjs} +4 -38
- package/dist/chunk-757OYF6G.cjs.map +1 -0
- package/dist/chunk-AXTDDWMR.js +16 -0
- package/dist/chunk-AXTDDWMR.js.map +1 -0
- package/dist/{chunk-B3AHCIV5.js → chunk-BJ24VPOA.js} +4 -55
- package/dist/chunk-BJ24VPOA.js.map +1 -0
- package/dist/chunk-C7PTF6BQ.cjs +172 -0
- package/dist/chunk-C7PTF6BQ.cjs.map +1 -0
- package/dist/{chunk-T5B7FM7S.js → chunk-COA3S3CZ.js} +3 -3
- package/dist/{chunk-T5B7FM7S.js.map → chunk-COA3S3CZ.js.map} +1 -1
- package/dist/{chunk-C44TDH54.js → chunk-CQPFW64W.js} +5 -5
- package/dist/{chunk-C44TDH54.js.map → chunk-CQPFW64W.js.map} +1 -1
- package/dist/chunk-D3WFIFRY.cjs +659 -0
- package/dist/chunk-D3WFIFRY.cjs.map +1 -0
- package/dist/{chunk-QXMR5YHC.js → chunk-DIB4JYUY.js} +19 -3
- package/dist/chunk-DIB4JYUY.js.map +1 -0
- package/dist/chunk-DVB5ZKOF.js +22 -0
- package/dist/chunk-DVB5ZKOF.js.map +1 -0
- package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
- package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
- package/dist/chunk-EDV7CYG6.cjs +18 -0
- package/dist/chunk-EDV7CYG6.cjs.map +1 -0
- package/dist/chunk-FAXXN7KI.cjs +213 -0
- package/dist/chunk-FAXXN7KI.cjs.map +1 -0
- package/dist/{chunk-2MJWWPHY.js → chunk-G4IYES7G.js} +140 -15
- package/dist/chunk-G4IYES7G.js.map +1 -0
- package/dist/{chunk-MFMASSEO.cjs → chunk-GGTUMLCT.cjs} +93 -91
- package/dist/chunk-GGTUMLCT.cjs.map +1 -0
- package/dist/{chunk-QI6AIHWP.cjs → chunk-GOWXP5KT.cjs} +145 -14
- package/dist/chunk-GOWXP5KT.cjs.map +1 -0
- package/dist/{chunk-O6IEZDRC.cjs → chunk-GRGS5M6O.cjs} +181 -3
- package/dist/chunk-GRGS5M6O.cjs.map +1 -0
- package/dist/{chunk-A6IU4GIW.js → chunk-HGLC566X.js} +598 -13
- package/dist/chunk-HGLC566X.js.map +1 -0
- package/dist/{chunk-O2GW5IY6.cjs → chunk-ILM42LE6.cjs} +33 -33
- package/dist/{chunk-O2GW5IY6.cjs.map → chunk-ILM42LE6.cjs.map} +1 -1
- package/dist/{chunk-C3CGJK7A.cjs → chunk-IPQ5MJ4Z.cjs} +636 -31
- package/dist/chunk-IPQ5MJ4Z.cjs.map +1 -0
- package/dist/{chunk-NRFAWUVD.js → chunk-JAANWQGB.js} +157 -157
- package/dist/chunk-JAANWQGB.js.map +1 -0
- package/dist/{chunk-7RJTEWYM.js → chunk-JGOST4IL.js} +350 -64
- package/dist/chunk-JGOST4IL.js.map +1 -0
- package/dist/chunk-KHXEIEXN.js +41 -0
- package/dist/chunk-KHXEIEXN.js.map +1 -0
- package/dist/chunk-KLPRAQCE.cjs +22 -0
- package/dist/chunk-KLPRAQCE.cjs.map +1 -0
- package/dist/chunk-KQYPP72K.js +644 -0
- package/dist/chunk-KQYPP72K.js.map +1 -0
- package/dist/chunk-KUT2Y7JF.cjs +43 -0
- package/dist/chunk-KUT2Y7JF.cjs.map +1 -0
- package/dist/{chunk-6YTHQ73P.cjs → chunk-LLYZGH3L.cjs} +3 -56
- package/dist/chunk-LLYZGH3L.cjs.map +1 -0
- package/dist/{chunk-YSHIC4NJ.cjs → chunk-LXTOOUEN.cjs} +159 -154
- package/dist/chunk-LXTOOUEN.cjs.map +1 -0
- package/dist/{chunk-EVUEIBNU.js → chunk-M4S75AEJ.js} +44 -5
- package/dist/chunk-M4S75AEJ.js.map +1 -0
- package/dist/{chunk-V5OAXIBN.cjs → chunk-NPR5BGFF.cjs} +11 -11
- package/dist/{chunk-V5OAXIBN.cjs.map → chunk-NPR5BGFF.cjs.map} +1 -1
- package/dist/{chunk-PLJ7PHWU.cjs → chunk-NS7NVX4E.cjs} +3 -3
- package/dist/{chunk-PLJ7PHWU.cjs.map → chunk-NS7NVX4E.cjs.map} +1 -1
- package/dist/{chunk-RB7GX2VT.cjs → chunk-NWNAYXC7.cjs} +9 -9
- package/dist/{chunk-RB7GX2VT.cjs.map → chunk-NWNAYXC7.cjs.map} +1 -1
- package/dist/chunk-Q6N6MZKO.js +5004 -0
- package/dist/chunk-Q6N6MZKO.js.map +1 -0
- package/dist/{chunk-I2QSDQQV.cjs → chunk-QT3A4PFC.cjs} +21 -2
- package/dist/chunk-QT3A4PFC.cjs.map +1 -0
- package/dist/{chunk-6HCJ3ZEU.js → chunk-R6VCPDPF.js} +178 -6
- package/dist/chunk-R6VCPDPF.js.map +1 -0
- package/dist/{chunk-ZM26YEOT.js → chunk-RY2SODRN.js} +3 -3
- package/dist/{chunk-ZM26YEOT.js.map → chunk-RY2SODRN.js.map} +1 -1
- package/dist/chunk-SDOEHEJP.js +208 -0
- package/dist/chunk-SDOEHEJP.js.map +1 -0
- package/dist/{chunk-DETZZBG2.cjs → chunk-SIB6C7P7.cjs} +43 -2
- package/dist/chunk-SIB6C7P7.cjs.map +1 -0
- package/dist/{chunk-OPTBQSCV.cjs → chunk-SMN32BQ3.cjs} +4 -183
- package/dist/chunk-SMN32BQ3.cjs.map +1 -0
- package/dist/chunk-TAWPVD6C.cjs +1956 -0
- package/dist/chunk-TAWPVD6C.cjs.map +1 -0
- package/dist/chunk-TC25LGIM.js +6584 -0
- package/dist/chunk-TC25LGIM.js.map +1 -0
- package/dist/{chunk-OBWYM25Y.js → chunk-TL45OJQE.js} +85 -83
- package/dist/chunk-TL45OJQE.js.map +1 -0
- package/dist/{chunk-AOSUHWIL.js → chunk-TZOQKV64.js} +4 -37
- package/dist/chunk-TZOQKV64.js.map +1 -0
- package/dist/chunk-UTVY63DG.js +16 -0
- package/dist/chunk-UTVY63DG.js.map +1 -0
- package/dist/chunk-V4YZXGXR.cjs +6751 -0
- package/dist/chunk-V4YZXGXR.cjs.map +1 -0
- package/dist/chunk-XRWHFMHK.js +19 -0
- package/dist/chunk-XRWHFMHK.js.map +1 -0
- package/dist/{chunk-O4YPVYPO.cjs → chunk-YAEXSCUW.cjs} +364 -60
- package/dist/chunk-YAEXSCUW.cjs.map +1 -0
- package/dist/chunk-YIFCLNII.cjs +18 -0
- package/dist/chunk-YIFCLNII.cjs.map +1 -0
- package/dist/chunk-Z27QMJ6S.cjs +25 -0
- package/dist/chunk-Z27QMJ6S.cjs.map +1 -0
- package/dist/{chunk-CSI2B2H5.js → chunk-Z4NQ3TED.js} +4 -4
- package/dist/chunk-Z4NQ3TED.js.map +1 -0
- package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
- package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
- package/dist/{chunk-FUTMU4FR.js → chunk-ZLEYLCE4.js} +8 -181
- package/dist/chunk-ZLEYLCE4.js.map +1 -0
- package/dist/chunk-ZNLTEZEF.js +170 -0
- package/dist/chunk-ZNLTEZEF.js.map +1 -0
- package/dist/chunk-ZO7PJMCO.js +1907 -0
- package/dist/chunk-ZO7PJMCO.js.map +1 -0
- package/dist/citations/index.cjs +14 -14
- package/dist/citations/index.js +2 -2
- package/dist/collaboration/index.cjs +74 -74
- package/dist/collaboration/index.js +3 -3
- package/dist/connect/docx.cjs +23 -28
- package/dist/connect/docx.cjs.map +1 -1
- package/dist/connect/docx.js +12 -28
- package/dist/connect/docx.js.map +1 -1
- package/dist/connect/index.cjs +8799 -2057
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +11 -2
- package/dist/connect/index.js +8578 -1884
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +1229 -0
- package/dist/connect/viewer.cjs.map +1 -0
- package/dist/connect/viewer.d.ts +8 -0
- package/dist/connect/viewer.js +1226 -0
- package/dist/connect/viewer.js.map +1 -0
- package/dist/connection/ConnectedWorkflowsTable.d.ts +2 -12
- package/dist/connection/ai.d.ts +2 -9
- package/dist/connection/billing/AddAddonDialog.d.ts +24 -0
- package/dist/connection/billing/BillingCard.d.ts +18 -0
- package/dist/connection/billing/BillingProjectEntity.d.ts +9 -0
- package/dist/connection/billing/ChangePlanDialog.d.ts +20 -0
- package/dist/connection/billing/ChangeProPlan.d.ts +20 -0
- package/dist/connection/billing/CheckoutTotal.d.ts +12 -0
- package/dist/connection/billing/DailyCapEditor.d.ts +4 -0
- package/dist/connection/billing/InvoicesModal.d.ts +6 -0
- package/dist/connection/billing/NewProjectFlow.d.ts +14 -0
- package/dist/connection/billing/PlanChangeLines.d.ts +13 -0
- package/dist/connection/billing/PlanSelector.d.ts +50 -0
- package/dist/connection/billing/ProjectBilling.d.ts +24 -0
- package/dist/connection/billing/ProjectDetail.d.ts +16 -0
- package/dist/connection/billing/ProjectUsageCard.d.ts +21 -0
- package/dist/connection/billing/ProjectUsageContent.d.ts +18 -0
- package/dist/connection/billing/ProjectsTable.d.ts +13 -0
- package/dist/connection/billing/ReduceAddonDialog.d.ts +18 -0
- package/dist/connection/billing/ReferralReward.d.ts +32 -0
- package/dist/connection/billing/SharedProjects.d.ts +13 -0
- package/dist/connection/billing/StripeCheckoutModal.d.ts +32 -0
- package/dist/connection/billing/SubscriptionPlans.d.ts +15 -0
- package/dist/connection/billing/SubscriptionStatus.d.ts +10 -0
- package/dist/connection/billing/addon-pricing.d.ts +97 -0
- package/dist/connection/billing/api-error.d.ts +6 -0
- package/dist/connection/billing/billing-country.d.ts +14 -0
- package/dist/connection/billing/billing-focus.d.ts +11 -0
- package/dist/connection/billing/index.d.ts +22 -0
- package/dist/connection/billing/plan-badge.d.ts +15 -0
- package/dist/connection/billing/plan-change-outcome.d.ts +15 -0
- package/dist/connection/billing/plan-constants.d.ts +29 -0
- package/dist/connection/billing/plan-pricing.d.ts +67 -0
- package/dist/connection/billing/quota-items.d.ts +33 -0
- package/dist/connection/billing/referral-reward.d.ts +28 -0
- package/dist/connection/billing/refusal-copy.d.ts +5 -0
- package/dist/connection/billing/reward-balance.d.ts +19 -0
- package/dist/connection/billing/support.d.ts +35 -0
- package/dist/connection/billing/tax-quote.d.ts +36 -0
- package/dist/connection/billing/useAddonPurchase.d.ts +32 -0
- package/dist/connection/billing/useAutoRefreshPendingProjects.d.ts +11 -0
- package/dist/connection/billing/useCheckoutQuote.d.ts +30 -0
- package/dist/connection/billing/useOpenBillingPortal.d.ts +12 -0
- package/dist/connection/calendar/CalendarSettingsDialog.d.ts +1 -1
- package/dist/connection/connectors/ConnectedAppsSettings.d.ts +24 -0
- package/dist/connection/connectors/ConnectedDriveSyncDialog.d.ts +12 -0
- package/dist/connection/connectors/ConnectedMailboxSyncDialog.d.ts +12 -0
- package/dist/connection/connectors/index.d.ts +4 -0
- package/dist/connection/connectors/sync-labels.d.ts +21 -0
- package/dist/connection/facts/ConnectedFactsPage.d.ts +50 -0
- package/dist/connection/facts/FactMarkdownEditor.d.ts +57 -0
- package/dist/connection/facts/FactSourcesPopover.d.ts +38 -0
- package/dist/connection/facts/FactTextEditor.d.ts +2 -0
- package/dist/connection/facts/factNouns.d.ts +4 -0
- package/dist/connection/facts/factPageColumns.d.ts +37 -0
- package/dist/connection/facts/types.d.ts +127 -0
- package/dist/connection/facts/useFactActions.d.ts +10 -0
- package/dist/connection/facts/useFactComposer.d.ts +54 -0
- package/dist/connection/facts/useFactFilters.d.ts +101 -0
- package/dist/connection/facts/useFactSelection.d.ts +82 -0
- package/dist/connection/facts/useFactsGrid.d.ts +87 -0
- package/dist/connection/facts/useFactsPageView.d.ts +4 -0
- package/dist/connection/mail/ConnectedMailComposer.d.ts +3 -1
- package/dist/connection/mail/ConnectedMailbox.d.ts +4 -2
- package/dist/connection/mail/MailComposerForm.d.ts +4 -2
- package/dist/connection/mail/MailRecipientInput.d.ts +14 -0
- package/dist/connection/mail/index.d.ts +1 -1
- package/dist/connection/mail/types.d.ts +10 -0
- package/dist/connection/search/ConnectedSearchPage.d.ts +64 -0
- package/dist/connection/search/SearchResultRows.d.ts +38 -0
- package/dist/connection/search/index.d.ts +2 -0
- package/dist/connection/settings-page/ConnectedSettingsPage.d.ts +4 -0
- package/dist/connection/settings-page/index.d.ts +1 -1
- package/dist/connection/tags/ConnectedTagTable.d.ts +108 -0
- package/dist/connection/tags/ConnectedTagsPage.d.ts +55 -0
- package/dist/connection/tags/DocTagPassages.d.ts +25 -0
- package/dist/connection/tags/GlossaryExport.d.ts +7 -0
- package/dist/connection/tags/TagCombineFilter.d.ts +14 -0
- package/dist/connection/tags/TagPlacement.d.ts +16 -0
- package/dist/connection/tags/TagsPageSections.d.ts +36 -0
- package/dist/connection/tags/tagCombine.d.ts +55 -0
- package/dist/connection/useConnectedWorkNotifications.d.ts +7 -24
- package/dist/connection/viewer/ConnectedDocumentToolsProvider.d.ts +11 -0
- package/dist/connection/viewer/ConnectedDocumentViewer.d.ts +21 -0
- package/dist/connection/viewer/FinaliseTranslationButton.d.ts +15 -0
- package/dist/connection/viewer/ViewerPdfPane.d.ts +46 -0
- package/dist/connection/viewer/support.d.ts +79 -0
- package/dist/connection/viewer/useImageCrop.d.ts +13 -0
- package/dist/connection/viewer/useViewedDocument.d.ts +70 -0
- package/dist/connection/viewer/useViewerBlobs.d.ts +15 -0
- package/dist/connection/viewer/useViewerTabs.d.ts +18 -0
- package/dist/connection/viewer/useViewerVersions.d.ts +11 -0
- package/dist/connection/workspace-settings/useConnectedWorkspaceSettings.d.ts +6 -0
- package/dist/document-tools/index.cjs +59 -652
- package/dist/document-tools/index.cjs.map +1 -1
- package/dist/document-tools/index.js +2 -641
- package/dist/document-tools/index.js.map +1 -1
- package/dist/docx/index.cjs +48 -47
- package/dist/docx/index.js +4 -3
- package/dist/facts/FactsBulkBar.d.ts +6 -3
- package/dist/facts/cited-version-ref.d.ts +1 -0
- package/dist/facts/index.cjs +206 -1942
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.d.ts +1 -0
- package/dist/facts/index.js +15 -1897
- package/dist/facts/index.js.map +1 -1
- package/dist/files/ViewerChrome.d.ts +5 -4
- package/dist/files/ViewerControlBar.d.ts +12 -0
- package/dist/files/doc-labels.d.ts +35 -0
- package/dist/files/grid/FilterButton.d.ts +12 -0
- package/dist/files/grid/RowDensityControl.d.ts +18 -0
- package/dist/files/grid/row-density.d.ts +27 -0
- package/dist/files/index.cjs +779 -7100
- package/dist/files/index.cjs.map +1 -1
- package/dist/files/index.d.ts +5 -0
- package/dist/files/index.js +14 -6919
- package/dist/files/index.js.map +1 -1
- package/dist/home/index.cjs +2 -2
- package/dist/home/index.js +2 -2
- package/dist/index.cjs +1043 -1259
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +27 -360
- package/dist/index.js.map +1 -1
- package/dist/retrieval/SearchSnippet.d.ts +6 -0
- package/dist/retrieval/index.cjs +75 -42
- package/dist/retrieval/index.d.ts +2 -0
- package/dist/retrieval/index.js +3 -2
- package/dist/retrieval/search-results.d.ts +46 -0
- package/dist/settings/Billing.d.ts +0 -66
- package/dist/settings/PlanBadge.d.ts +1 -1
- package/dist/settings/SubscriptionParts.d.ts +1 -50
- package/dist/settings/index.cjs +501 -3714
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.d.ts +3 -2
- package/dist/settings/index.js +10 -3527
- package/dist/settings/index.js.map +1 -1
- package/dist/settings/inverted-index-filter.d.ts +26 -0
- package/dist/shell/index.cjs +2 -2
- package/dist/shell/index.js +2 -2
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +6 -6
- package/dist/studio/index.js +5 -5
- package/dist/tags/definitions.d.ts +10 -0
- package/dist/tags/index.d.ts +4 -1
- package/dist/tags/page/ExtractEntitiesDialog.d.ts +24 -0
- package/dist/tags/page/TagPicker.d.ts +16 -0
- package/dist/tags/page/tagsPageLabels.d.ts +36 -0
- package/dist/workflow-canvas/index.cjs +21 -22
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +8 -9
- package/dist/workflow-canvas/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +13 -4
- package/dist/calendar/access-setup.d.ts +0 -8
- package/dist/chunk-2MJWWPHY.js.map +0 -1
- package/dist/chunk-3AFWGEDJ.cjs +0 -53
- package/dist/chunk-3AFWGEDJ.cjs.map +0 -1
- package/dist/chunk-5YHEHEJT.js +0 -1667
- package/dist/chunk-5YHEHEJT.js.map +0 -1
- package/dist/chunk-6HCJ3ZEU.js.map +0 -1
- package/dist/chunk-6YTHQ73P.cjs.map +0 -1
- package/dist/chunk-7RJTEWYM.js.map +0 -1
- package/dist/chunk-A6IU4GIW.js.map +0 -1
- package/dist/chunk-AOSUHWIL.js.map +0 -1
- package/dist/chunk-B3AHCIV5.js.map +0 -1
- package/dist/chunk-C3CGJK7A.cjs.map +0 -1
- package/dist/chunk-CSI2B2H5.js.map +0 -1
- package/dist/chunk-DETZZBG2.cjs.map +0 -1
- package/dist/chunk-EVUEIBNU.js.map +0 -1
- package/dist/chunk-FUTMU4FR.js.map +0 -1
- package/dist/chunk-I2QSDQQV.cjs.map +0 -1
- package/dist/chunk-J5CWKFSC.js +0 -170
- package/dist/chunk-J5CWKFSC.js.map +0 -1
- package/dist/chunk-MFMASSEO.cjs.map +0 -1
- package/dist/chunk-MHFF5N65.cjs.map +0 -1
- package/dist/chunk-NRFAWUVD.js.map +0 -1
- package/dist/chunk-O4YPVYPO.cjs.map +0 -1
- package/dist/chunk-O6IEZDRC.cjs.map +0 -1
- package/dist/chunk-OBWYM25Y.js.map +0 -1
- package/dist/chunk-ODRHHWHY.cjs.map +0 -1
- package/dist/chunk-OPTBQSCV.cjs.map +0 -1
- package/dist/chunk-QI6AIHWP.cjs.map +0 -1
- package/dist/chunk-QXMR5YHC.js.map +0 -1
- package/dist/chunk-RFXJYIDV.js +0 -50
- package/dist/chunk-RFXJYIDV.js.map +0 -1
- package/dist/chunk-U73KPFYH.cjs +0 -1717
- package/dist/chunk-U73KPFYH.cjs.map +0 -1
- package/dist/chunk-XVUOMWMD.cjs +0 -177
- package/dist/chunk-XVUOMWMD.cjs.map +0 -1
- package/dist/chunk-YSHIC4NJ.cjs.map +0 -1
- package/dist/connection/ConnectedTagTable.d.ts +0 -32
- package/dist/connection/calendar/CopyField.d.ts +0 -9
- package/dist/connection/calendar/OpenAccessPanel.d.ts +0 -7
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/connection/viewer/support.tsx
|
|
6
|
+
var DocumentViewerSupportContext = createContext({});
|
|
7
|
+
function DocumentViewerSupportProvider({
|
|
8
|
+
value,
|
|
9
|
+
children
|
|
10
|
+
}) {
|
|
11
|
+
return /* @__PURE__ */ jsx(DocumentViewerSupportContext.Provider, { value, children });
|
|
12
|
+
}
|
|
13
|
+
function useDocumentViewerSupport() {
|
|
14
|
+
return useContext(DocumentViewerSupportContext);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { DocumentViewerSupportProvider, useDocumentViewerSupport };
|
|
18
|
+
//# sourceMappingURL=chunk-XRWHFMHK.js.map
|
|
19
|
+
//# sourceMappingURL=chunk-XRWHFMHK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/connection/viewer/support.tsx"],"names":[],"mappings":";;;;AA6EA,IAAM,4BAAA,GAA+B,aAAA,CAAqC,EAAE,CAAA;AAErE,SAAS,6BAAA,CAA8B;AAAA,EAC5C,KAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,uBACE,GAAA,CAAC,4BAAA,CAA6B,QAAA,EAA7B,EAAsC,OACpC,QAAA,EACH,CAAA;AAEJ;AAEO,SAAS,wBAAA,GAAkD;AAChE,EAAA,OAAO,WAAW,4BAA4B,CAAA;AAChD","file":"chunk-XRWHFMHK.js","sourcesContent":["/**\n * What a host adds to the connected document viewer. The viewer reads documents, versions, PDFs,\n * markup and signatures on the signed-in session by itself; these are the host's own things it\n * cannot know: documents the host makes on the client (an artifact streaming in from a chat, an\n * unsaved draft), the host's dialogs and workflows a document action opens, and how the host lays\n * the viewer out. Every field is optional: without one the viewer offers less (no Translate button,\n * no draft controls), never something that does nothing.\n */\n\nimport { createContext, useContext, type ReactNode } from 'react'\nimport type { components } from '@arbidocs/client'\n\n/** A document's record, as the viewer reads it. */\nexport type ViewerDocumentRecord = components['schemas']['DocResponse']\n\n/** An artifact being generated in a chat, shown in the viewer as it streams. */\nexport interface ViewerStreamingDocument {\n title?: string | null\n /** The content so far (Markdown, or the html/react source of a live artifact). */\n content: string\n /** How it is carried: a document draft, a live `html` / `react` artifact, an `image`. */\n mode?: string | null\n isComplete: boolean\n}\n\n/** A document the user started on the client, with no backend record until it is saved. */\nexport interface ViewerDraftDocument {\n kind: 'text' | 'audio' | 'photo' | 'video'\n title?: string | null\n /** A text draft's starting content. */\n content?: string | null\n}\n\nexport interface DocumentViewerSupport {\n /** Artifacts streaming in, by document id. */\n streamingDocuments?: Readonly<Record<string, ViewerStreamingDocument>>\n /** Unsaved drafts, by their client id. */\n draftDocuments?: Readonly<Record<string, ViewerDraftDocument>>\n /** A draft's kind (text, photo, audio, video), in place of the tabs. */\n renderDraftKind?: (draftId: string) => ReactNode\n /** A draft's name (editable), in place of the title. */\n renderDraftTitle?: (draftId: string) => ReactNode\n /** The recorder of a photo, audio or video draft: the whole body of the viewer. */\n renderCaptureDraft?: (draftId: string) => ReactNode\n /** A text draft was saved as `documentId`; the viewer shows it next. */\n onDraftSaved?: (draftId: string, documentId: string) => void\n /** The copy of a document kept on this device, for when the network is down. */\n loadOfflineCopy?: (document: ViewerDocumentRecord) => Promise<Blob | undefined>\n /** Documents related to the one open (near duplicates), beside its name. */\n renderRelated?: (document: ViewerDocumentRecord) => ReactNode\n /** A document as a pill (the comparison's other side). Default: its name. */\n renderDocumentPill?: (documentId: string) => ReactNode\n /** Open the host's share dialog for the document. Default: share it with the workspace. */\n share?: (document: { id: string; name: string | undefined; isPrivate: boolean }) => void\n /** Ask the assistant about a version (`doc-…@v2`) open read-only. Absent: not offered. */\n askAboutVersion?: (versionRef: string) => void\n /** Translate the document (or the version) on screen. Absent: not offered. */\n translate?: (documentRef: string) => void\n /** Start an image generation from the image on screen. Absent: not offered. */\n useImageAsReference?: (documentId: string) => void\n /** The text (parsed) view of the document; the viewer gives it the page and zoom. */\n renderParsedView?: (props: ParsedViewProps) => ReactNode\n /** How dates read (versions, signatures). Default: `fmtDate`. */\n formatDate?: (iso: string) => string\n /** The viewer is shown in another window: PDF pages render without the page's web fonts. */\n isDetached?: boolean\n}\n\n/** What the viewer hands the text view. */\nexport interface ParsedViewProps {\n documentId: string\n onLoadSuccess: (totalPages: number) => void\n scrollTrigger: number\n zoom: number\n onZoomChange: (zoom: number) => void\n}\n\nconst DocumentViewerSupportContext = createContext<DocumentViewerSupport>({})\n\nexport function DocumentViewerSupportProvider({\n value,\n children,\n}: {\n value: DocumentViewerSupport\n children: ReactNode\n}) {\n return (\n <DocumentViewerSupportContext.Provider value={value}>\n {children}\n </DocumentViewerSupportContext.Provider>\n )\n}\n\nexport function useDocumentViewerSupport(): DocumentViewerSupport {\n return useContext(DocumentViewerSupportContext)\n}\n"]}
|
|
@@ -1,12 +1,353 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
var chunkFAXXN7KI_cjs = require('./chunk-FAXXN7KI.cjs');
|
|
4
5
|
var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
|
|
5
|
-
var react = require('react');
|
|
6
6
|
var lucideReact = require('lucide-react');
|
|
7
7
|
var ui = require('@arbidocs/react/ui');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
var react = require('react');
|
|
10
|
+
|
|
11
|
+
function FilesFilterBar({ className, ...props }) {
|
|
12
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
"data-slot": "files-filter-bar",
|
|
16
|
+
className: ui.cn("flex min-w-0 flex-1 flex-nowrap items-center gap-2", className),
|
|
17
|
+
...props
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
function FilesTagsButton({
|
|
22
|
+
onClick,
|
|
23
|
+
label = "Tags",
|
|
24
|
+
className,
|
|
25
|
+
testId
|
|
26
|
+
}) {
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28
|
+
ui.Button,
|
|
29
|
+
{
|
|
30
|
+
variant: "ghost",
|
|
31
|
+
size: "sm",
|
|
32
|
+
className: ui.cn("h-8 shrink-0 gap-1.5 px-2 font-normal pointer-coarse:h-11", className),
|
|
33
|
+
onClick,
|
|
34
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "filter-bar-tags-button" }),
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.BookMarked, { className: "h-3.5 w-3.5" }),
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm max-[480px]:sr-only", children: label })
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function FilesViewCenter({ className, ...props }) {
|
|
43
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
"data-slot": "files-view-center",
|
|
47
|
+
className: ui.cn("@container flex min-w-[9.5rem] flex-1 items-center gap-2", className),
|
|
48
|
+
...props
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
function FilesModalFooter({ children, className }) {
|
|
53
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
"data-slot": "files-modal-footer",
|
|
57
|
+
className: ui.cn(
|
|
58
|
+
// Sticks to the bottom of the modal's scrolling body so Close is always reachable.
|
|
59
|
+
"sticky bottom-0 z-40 flex justify-end gap-2 border-t border-border bg-background px-4 py-3 sm:px-6",
|
|
60
|
+
className
|
|
61
|
+
),
|
|
62
|
+
children
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
}
|
|
9
66
|
|
|
67
|
+
// src/files/grid/row-density.ts
|
|
68
|
+
var LINE_PX = 14 * 1.35;
|
|
69
|
+
var CHROME = 18;
|
|
70
|
+
var MIN_LINES = 1;
|
|
71
|
+
var MAX_LINES = 10;
|
|
72
|
+
var rowHeightForLines = (lines) => Math.ceil(lines * LINE_PX + CHROME);
|
|
73
|
+
var linesForRowHeight = (height) => Math.max(MIN_LINES, Math.min(MAX_LINES, Math.floor((height - CHROME) / LINE_PX)));
|
|
74
|
+
var ROW_MIN = rowHeightForLines(MIN_LINES);
|
|
75
|
+
function RowDensityControl({
|
|
76
|
+
rowHeight,
|
|
77
|
+
onRowHeightChange,
|
|
78
|
+
testId = "documents-density"
|
|
79
|
+
}) {
|
|
80
|
+
const lines = linesForRowHeight(rowHeight);
|
|
81
|
+
const setLines = (next) => onRowHeightChange(rowHeightForLines(Math.max(MIN_LINES, Math.min(MAX_LINES, next))));
|
|
82
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { delayDuration: 300, children: [
|
|
83
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-7 items-center gap-1.5 rounded-md border border-input px-2 pointer-coarse:h-11", children: [
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden text-xs text-muted-foreground md:inline", children: "Rows" }),
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
+
"button",
|
|
87
|
+
{
|
|
88
|
+
type: "button",
|
|
89
|
+
"aria-label": "Shorter rows",
|
|
90
|
+
"data-testid": `${testId}-out`,
|
|
91
|
+
onClick: () => setLines(lines - 1),
|
|
92
|
+
disabled: lines <= MIN_LINES,
|
|
93
|
+
className: "flex items-center justify-center text-muted-foreground hover:text-foreground disabled:opacity-40 pointer-coarse:size-11",
|
|
94
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ListChevronsUpDown, { className: "h-4 w-4" })
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
98
|
+
ui.Slider,
|
|
99
|
+
{
|
|
100
|
+
value: [lines],
|
|
101
|
+
min: MIN_LINES,
|
|
102
|
+
max: MAX_LINES,
|
|
103
|
+
step: 1,
|
|
104
|
+
onValueChange: ([value]) => setLines(value),
|
|
105
|
+
"aria-label": "Row height",
|
|
106
|
+
"data-testid": testId,
|
|
107
|
+
className: "w-20"
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
] }) }),
|
|
111
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.TooltipContent, { children: [
|
|
112
|
+
"Row height: ",
|
|
113
|
+
lines,
|
|
114
|
+
" line",
|
|
115
|
+
lines === 1 ? "" : "s"
|
|
116
|
+
] })
|
|
117
|
+
] });
|
|
118
|
+
}
|
|
119
|
+
function FolderBreadcrumb({
|
|
120
|
+
segments,
|
|
121
|
+
size = "xs"
|
|
122
|
+
}) {
|
|
123
|
+
const text = size === "sm" ? "text-sm" : "text-xs";
|
|
124
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-slot": "folder-breadcrumb", className: "min-w-0 truncate", children: segments.map((part, i, arr) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-0.5", children: [
|
|
125
|
+
i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `mx-0.5 ${text} text-muted-foreground/50`, children: "/" }),
|
|
126
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: i < arr.length - 1 ? `${text} text-muted-foreground` : "", children: part })
|
|
127
|
+
] }, i)) });
|
|
128
|
+
}
|
|
129
|
+
function FolderCell({
|
|
130
|
+
folder,
|
|
131
|
+
segments,
|
|
132
|
+
icon,
|
|
133
|
+
isEditable,
|
|
134
|
+
picker,
|
|
135
|
+
className
|
|
136
|
+
}) {
|
|
137
|
+
const display = folder ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
138
|
+
icon ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FolderOpen, { className: "h-3.5 w-3.5 flex-none shrink-0 text-muted-foreground" }),
|
|
139
|
+
/* @__PURE__ */ jsxRuntime.jsx(FolderBreadcrumb, { segments })
|
|
140
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
141
|
+
const title = folder || void 0;
|
|
142
|
+
if (!isEditable) {
|
|
143
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
144
|
+
"div",
|
|
145
|
+
{
|
|
146
|
+
"data-slot": "folder-cell",
|
|
147
|
+
title,
|
|
148
|
+
className: ui.cn("flex h-full w-full min-w-0 items-center gap-1.5 text-sm", className),
|
|
149
|
+
children: display
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { children: [
|
|
154
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
+
"button",
|
|
156
|
+
{
|
|
157
|
+
type: "button",
|
|
158
|
+
"data-slot": "folder-cell",
|
|
159
|
+
title,
|
|
160
|
+
className: ui.cn(
|
|
161
|
+
"flex h-full w-full min-w-0 cursor-pointer items-center gap-1.5 text-left text-sm hover:text-primary",
|
|
162
|
+
className
|
|
163
|
+
),
|
|
164
|
+
children: display
|
|
165
|
+
}
|
|
166
|
+
) }),
|
|
167
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
168
|
+
ui.PopoverContent,
|
|
169
|
+
{
|
|
170
|
+
className: "w-max min-w-[220px] max-w-[min(640px,92vw)] p-0",
|
|
171
|
+
align: "start",
|
|
172
|
+
side: "bottom",
|
|
173
|
+
sideOffset: 4,
|
|
174
|
+
children: picker
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
] });
|
|
178
|
+
}
|
|
179
|
+
var FIELD_SURFACE = "rounded-md border border-input bg-muted/40 text-sm transition-colors hover:bg-background";
|
|
180
|
+
function FieldValue({ tone = "default", isMono, isTruncated, children }) {
|
|
181
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
182
|
+
"span",
|
|
183
|
+
{
|
|
184
|
+
"data-slot": "field-value",
|
|
185
|
+
className: ui.cn(
|
|
186
|
+
"text-sm",
|
|
187
|
+
tone === "strong" && "font-semibold",
|
|
188
|
+
tone === "muted" && "text-muted-foreground",
|
|
189
|
+
isMono && "font-mono",
|
|
190
|
+
isTruncated && "truncate"
|
|
191
|
+
),
|
|
192
|
+
children
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
function FieldFolderSelect({ folder, picker }) {
|
|
197
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { children: [
|
|
198
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
199
|
+
"button",
|
|
200
|
+
{
|
|
201
|
+
type: "button",
|
|
202
|
+
"data-slot": "field-folder-select",
|
|
203
|
+
className: ui.cn(
|
|
204
|
+
FIELD_SURFACE,
|
|
205
|
+
"flex h-9 w-full min-w-0 items-center gap-1.5 px-3 text-left hover:text-primary pointer-coarse:h-11"
|
|
206
|
+
),
|
|
207
|
+
children: [
|
|
208
|
+
folder ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
209
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.FolderOpen, { className: "size-3.5 flex-none shrink-0 text-yellow-600" }),
|
|
210
|
+
/* @__PURE__ */ jsxRuntime.jsx(FolderBreadcrumb, { segments: folder.split("/"), size: "sm" })
|
|
211
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u2014" }),
|
|
212
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsUpDown, { className: "ml-auto size-3.5 shrink-0 opacity-50" })
|
|
213
|
+
]
|
|
214
|
+
}
|
|
215
|
+
) }),
|
|
216
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
217
|
+
ui.PopoverContent,
|
|
218
|
+
{
|
|
219
|
+
className: "w-max min-w-[var(--radix-popover-trigger-width)] max-w-[min(640px,92vw)] p-0",
|
|
220
|
+
align: "start",
|
|
221
|
+
side: "bottom",
|
|
222
|
+
sideOffset: 4,
|
|
223
|
+
children: picker
|
|
224
|
+
}
|
|
225
|
+
)
|
|
226
|
+
] });
|
|
227
|
+
}
|
|
228
|
+
function FieldFolderValue({ folder }) {
|
|
229
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1.5 text-sm", children: folder ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
230
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.FolderOpen, { className: "size-3.5 shrink-0 text-yellow-600" }),
|
|
231
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: folder })
|
|
232
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u2014" }) });
|
|
233
|
+
}
|
|
234
|
+
function FieldLabelsSelect({
|
|
235
|
+
options,
|
|
236
|
+
appliedIds,
|
|
237
|
+
displayedIds = appliedIds,
|
|
238
|
+
onToggle,
|
|
239
|
+
onCreate,
|
|
240
|
+
emptyText = "Click to add",
|
|
241
|
+
labels
|
|
242
|
+
}) {
|
|
243
|
+
const applied = react.useMemo(
|
|
244
|
+
() => options.filter((o) => displayedIds.has(o.id)),
|
|
245
|
+
[options, displayedIds]
|
|
246
|
+
);
|
|
247
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { children: [
|
|
248
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
249
|
+
"button",
|
|
250
|
+
{
|
|
251
|
+
type: "button",
|
|
252
|
+
"data-slot": "field-labels-select",
|
|
253
|
+
className: ui.cn(
|
|
254
|
+
FIELD_SURFACE,
|
|
255
|
+
"flex min-h-9 w-full cursor-pointer items-center px-3 py-1.5 text-left pointer-coarse:min-h-11"
|
|
256
|
+
),
|
|
257
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-[28px] flex-wrap items-center gap-1.5", children: [
|
|
258
|
+
applied.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm italic text-muted-foreground", children: emptyText }),
|
|
259
|
+
applied.map((o) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-sm font-medium", children: [
|
|
260
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
261
|
+
"span",
|
|
262
|
+
{
|
|
263
|
+
className: "flex size-4 shrink-0 items-center justify-center rounded border-2",
|
|
264
|
+
style: { borderColor: o.color, backgroundColor: o.color },
|
|
265
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3 text-white", strokeWidth: 3 })
|
|
266
|
+
}
|
|
267
|
+
),
|
|
268
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-[280px] truncate", children: o.name })
|
|
269
|
+
] }, o.id))
|
|
270
|
+
] })
|
|
271
|
+
}
|
|
272
|
+
) }),
|
|
273
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverContent, { className: "w-[360px] p-0", align: "start", side: "bottom", sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
274
|
+
chunkFAXXN7KI_cjs.LabelPickerList,
|
|
275
|
+
{
|
|
276
|
+
options,
|
|
277
|
+
appliedIds,
|
|
278
|
+
onToggle,
|
|
279
|
+
onCreate,
|
|
280
|
+
labels: { ...chunkFAXXN7KI_cjs.DEFAULT_LABEL_MULTI_SELECT_LABELS, ...labels }
|
|
281
|
+
}
|
|
282
|
+
) })
|
|
283
|
+
] });
|
|
284
|
+
}
|
|
285
|
+
function FieldNativeSelect({
|
|
286
|
+
value,
|
|
287
|
+
options,
|
|
288
|
+
onChange,
|
|
289
|
+
emptyLabel = "--",
|
|
290
|
+
ariaLabel
|
|
291
|
+
}) {
|
|
292
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
293
|
+
"select",
|
|
294
|
+
{
|
|
295
|
+
value,
|
|
296
|
+
"aria-label": ariaLabel,
|
|
297
|
+
onChange: (e) => onChange(e.target.value),
|
|
298
|
+
className: "h-9 w-full rounded-md border border-input bg-muted/40 px-3 text-sm transition-colors focus:bg-background focus:outline-none focus:ring-1 focus:ring-ring pointer-coarse:h-11",
|
|
299
|
+
children: [
|
|
300
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: emptyLabel }),
|
|
301
|
+
options.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt, children: opt }, opt))
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
function FieldAttribution({ avatar, date, lines }) {
|
|
307
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", "data-slot": "field-attribution", children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
|
|
308
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
309
|
+
avatar,
|
|
310
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: date })
|
|
311
|
+
] }) }),
|
|
312
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "bottom", children: lines.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: line }, i)) })
|
|
313
|
+
] }) });
|
|
314
|
+
}
|
|
315
|
+
function FieldWithAttribution({
|
|
316
|
+
attribution,
|
|
317
|
+
children
|
|
318
|
+
}) {
|
|
319
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/doctag relative", "data-slot": "field-with-attribution", children: [
|
|
320
|
+
children,
|
|
321
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-0 top-0 bg-background/90 pl-2 opacity-0 transition-opacity group-focus-within/doctag:opacity-100 group-hover/doctag:opacity-100 pointer-coarse:opacity-100", children: attribution })
|
|
322
|
+
] });
|
|
323
|
+
}
|
|
324
|
+
var FilterButton = ({ params, colId }) => {
|
|
325
|
+
const [isFilterActive, setIsFilterActive] = react.useState(false);
|
|
326
|
+
const btnRef = react.useRef(null);
|
|
327
|
+
react.useEffect(() => {
|
|
328
|
+
const check = () => setIsFilterActive(!!params.api.getFilterModel()[colId]);
|
|
329
|
+
check();
|
|
330
|
+
params.api.addEventListener("filterChanged", check);
|
|
331
|
+
return () => {
|
|
332
|
+
if (!params.api.isDestroyed()) params.api.removeEventListener("filterChanged", check);
|
|
333
|
+
};
|
|
334
|
+
}, [params.api, colId]);
|
|
335
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
336
|
+
"span",
|
|
337
|
+
{
|
|
338
|
+
ref: btnRef,
|
|
339
|
+
role: "button",
|
|
340
|
+
"aria-label": "Filter",
|
|
341
|
+
onClick: (e) => {
|
|
342
|
+
e.stopPropagation();
|
|
343
|
+
if (btnRef.current) params.showFilter(btnRef.current);
|
|
344
|
+
},
|
|
345
|
+
className: `ag-header-icon ag-header-cell-filter-button ag-header-label-icon ${isFilterActive ? "ag-filter-active" : ""}`,
|
|
346
|
+
"aria-hidden": "false",
|
|
347
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ag-icon ag-icon-filter" })
|
|
348
|
+
}
|
|
349
|
+
);
|
|
350
|
+
};
|
|
10
351
|
var DEFAULT_FOLDER_PICKER_LABELS = {
|
|
11
352
|
none: "None",
|
|
12
353
|
removeFromFolder: "Remove from folder",
|
|
@@ -99,7 +440,7 @@ function FolderTree({
|
|
|
99
440
|
] })
|
|
100
441
|
] });
|
|
101
442
|
}
|
|
102
|
-
function
|
|
443
|
+
function FolderBreadcrumb2({ folder }) {
|
|
103
444
|
const parts = folder.split("/");
|
|
104
445
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: parts.map((part, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-0.5", children: [
|
|
105
446
|
i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mx-0.5 text-sm text-muted-foreground/50", children: "/" }),
|
|
@@ -173,7 +514,7 @@ function FolderCommandList({
|
|
|
173
514
|
className: "cursor-pointer text-sm",
|
|
174
515
|
children: [
|
|
175
516
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.FolderOpen, { className: "mr-1.5 size-3.5 flex-none shrink-0 text-yellow-text" }),
|
|
176
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
517
|
+
/* @__PURE__ */ jsxRuntime.jsx(FolderBreadcrumb2, { folder }),
|
|
177
518
|
value === folder && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex-none text-sm text-primary", children: "\u2713" })
|
|
178
519
|
]
|
|
179
520
|
},
|
|
@@ -303,71 +644,34 @@ function FolderFilterButton({
|
|
|
303
644
|
)
|
|
304
645
|
] });
|
|
305
646
|
}
|
|
306
|
-
function FilesFilterBar({ className, ...props }) {
|
|
307
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
308
|
-
"div",
|
|
309
|
-
{
|
|
310
|
-
"data-slot": "files-filter-bar",
|
|
311
|
-
className: ui.cn("flex min-w-0 flex-1 flex-nowrap items-center gap-2", className),
|
|
312
|
-
...props
|
|
313
|
-
}
|
|
314
|
-
);
|
|
315
|
-
}
|
|
316
|
-
function FilesTagsButton({
|
|
317
|
-
onClick,
|
|
318
|
-
label = "Tags",
|
|
319
|
-
className,
|
|
320
|
-
testId
|
|
321
|
-
}) {
|
|
322
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
323
|
-
ui.Button,
|
|
324
|
-
{
|
|
325
|
-
variant: "ghost",
|
|
326
|
-
size: "sm",
|
|
327
|
-
className: ui.cn("h-8 shrink-0 gap-1.5 px-2 font-normal pointer-coarse:h-11", className),
|
|
328
|
-
onClick,
|
|
329
|
-
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "filter-bar-tags-button" }),
|
|
330
|
-
children: [
|
|
331
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.BookMarked, { className: "h-3.5 w-3.5" }),
|
|
332
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm max-[480px]:sr-only", children: label })
|
|
333
|
-
]
|
|
334
|
-
}
|
|
335
|
-
);
|
|
336
|
-
}
|
|
337
|
-
function FilesViewCenter({ className, ...props }) {
|
|
338
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
339
|
-
"div",
|
|
340
|
-
{
|
|
341
|
-
"data-slot": "files-view-center",
|
|
342
|
-
className: ui.cn("@container flex min-w-[9.5rem] flex-1 items-center gap-2", className),
|
|
343
|
-
...props
|
|
344
|
-
}
|
|
345
|
-
);
|
|
346
|
-
}
|
|
347
|
-
function FilesModalFooter({ children, className }) {
|
|
348
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
349
|
-
"div",
|
|
350
|
-
{
|
|
351
|
-
"data-slot": "files-modal-footer",
|
|
352
|
-
className: ui.cn(
|
|
353
|
-
// Sticks to the bottom of the modal's scrolling body so Close is always reachable.
|
|
354
|
-
"sticky bottom-0 z-40 flex justify-end gap-2 border-t border-border bg-background px-4 py-3 sm:px-6",
|
|
355
|
-
className
|
|
356
|
-
),
|
|
357
|
-
children
|
|
358
|
-
}
|
|
359
|
-
);
|
|
360
|
-
}
|
|
361
647
|
|
|
648
|
+
exports.CHROME = CHROME;
|
|
362
649
|
exports.DEFAULT_FOLDER_FILTER_LABELS = DEFAULT_FOLDER_FILTER_LABELS;
|
|
363
650
|
exports.DEFAULT_FOLDER_PICKER_LABELS = DEFAULT_FOLDER_PICKER_LABELS;
|
|
651
|
+
exports.FieldAttribution = FieldAttribution;
|
|
652
|
+
exports.FieldFolderSelect = FieldFolderSelect;
|
|
653
|
+
exports.FieldFolderValue = FieldFolderValue;
|
|
654
|
+
exports.FieldLabelsSelect = FieldLabelsSelect;
|
|
655
|
+
exports.FieldNativeSelect = FieldNativeSelect;
|
|
656
|
+
exports.FieldValue = FieldValue;
|
|
657
|
+
exports.FieldWithAttribution = FieldWithAttribution;
|
|
364
658
|
exports.FilesFilterBar = FilesFilterBar;
|
|
365
659
|
exports.FilesModalFooter = FilesModalFooter;
|
|
366
660
|
exports.FilesTagsButton = FilesTagsButton;
|
|
367
661
|
exports.FilesViewCenter = FilesViewCenter;
|
|
662
|
+
exports.FilterButton = FilterButton;
|
|
663
|
+
exports.FolderBreadcrumb = FolderBreadcrumb;
|
|
664
|
+
exports.FolderCell = FolderCell;
|
|
368
665
|
exports.FolderCommandList = FolderCommandList;
|
|
369
666
|
exports.FolderFilterButton = FolderFilterButton;
|
|
370
667
|
exports.FolderPickerRow = FolderPickerRow;
|
|
371
668
|
exports.FolderTree = FolderTree;
|
|
372
|
-
|
|
373
|
-
|
|
669
|
+
exports.LINE_PX = LINE_PX;
|
|
670
|
+
exports.MAX_LINES = MAX_LINES;
|
|
671
|
+
exports.MIN_LINES = MIN_LINES;
|
|
672
|
+
exports.ROW_MIN = ROW_MIN;
|
|
673
|
+
exports.RowDensityControl = RowDensityControl;
|
|
674
|
+
exports.linesForRowHeight = linesForRowHeight;
|
|
675
|
+
exports.rowHeightForLines = rowHeightForLines;
|
|
676
|
+
//# sourceMappingURL=chunk-YAEXSCUW.cjs.map
|
|
677
|
+
//# sourceMappingURL=chunk-YAEXSCUW.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/files/page/FilesPageParts.tsx","../src/files/grid/row-density.ts","../src/files/grid/RowDensityControl.tsx","../src/files/cells/FolderCell.tsx","../src/files/FieldParts.tsx","../src/files/grid/FilterButton.tsx","../src/files/FolderPicker.tsx","../src/files/bulk/FolderFilterButton.tsx"],"names":["jsx","cn","jsxs","Button","testIdOr","BookMarked","Tooltip","TooltipTrigger","ListChevronsUpDown","Slider","TooltipContent","Fragment","FolderOpen","Popover","PopoverTrigger","PopoverContent","ChevronsUpDown","useMemo","Check","LabelPickerList","DEFAULT_LABEL_MULTI_SELECT_LABELS","useState","useRef","useEffect","Minus","FolderBreadcrumb","useCallback","Command","CommandInput","CommandList","CommandEmpty","Plus","CommandGroup","CommandItem","X","ChevronDown","FolderPlus"],"mappings":"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","file":"chunk-YAEXSCUW.cjs","sourcesContent":["import type { ComponentProps, ReactNode } from 'react'\nimport { BookMarked } from 'lucide-react'\nimport { Button, cn } from '@arbidocs/react/ui'\nimport { testIdOr } from '../../chat/test-id'\n\n/** Row of controls that follows the tab: filter field, folder picker, tags button. */\nexport function FilesFilterBar({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"files-filter-bar\"\n className={cn('flex min-w-0 flex-1 flex-nowrap items-center gap-2', className)}\n {...props}\n />\n )\n}\n\nexport interface FilesTagsButtonProps {\n onClick: () => void\n /** Button text (default \"Tags\"). */\n label?: string\n className?: string\n /** Overrides the test id (default `filter-bar-tags-button`). */\n testId?: string\n}\n\n/** Opens the labels / annotations vocabulary editor. The label collapses to sr-only on phones. */\nexport function FilesTagsButton({\n onClick,\n label = 'Tags',\n className,\n testId,\n}: FilesTagsButtonProps) {\n return (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn('h-8 shrink-0 gap-1.5 px-2 font-normal pointer-coarse:h-11', className)}\n onClick={onClick}\n data-testid={testIdOr(testId, { testId: 'filter-bar-tags-button' })}\n >\n <BookMarked className=\"h-3.5 w-3.5\" />\n <span className=\"text-sm max-[480px]:sr-only\">{label}</span>\n </Button>\n )\n}\n\n/**\n * The view switch beside the page title. Marks a size container so the switch collapses its labels\n * to icons by the room it is given (not the viewport), and shrinks with the row.\n */\nexport function FilesViewCenter({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"files-view-center\"\n className={cn('@container flex min-w-[9.5rem] flex-1 items-center gap-2', className)}\n {...props}\n />\n )\n}\n\nexport interface FilesModalFooterProps {\n children?: ReactNode\n className?: string\n}\n\n/** Footer row used when the page is hosted in a modal. */\nexport function FilesModalFooter({ children, className }: FilesModalFooterProps) {\n return (\n <div\n data-slot=\"files-modal-footer\"\n className={cn(\n // Sticks to the bottom of the modal's scrolling body so Close is always reachable.\n 'sticky bottom-0 z-40 flex justify-end gap-2 border-t border-border bg-background px-4 py-3 sm:px-6',\n className\n )}\n >\n {children}\n </div>\n )\n}\n","/**\n * Row-height ⇄ line-count math shared by the documents and facts tables.\n *\n * The grid (packages/arbi-blocks GridView) clamps a multiline cell to\n * `floor((rowHeight - chrome) / lineHeight)` fully-visible lines. Snapping every\n * density value to a line boundary makes each step add exactly one whole line\n * instead of growing the row while clipping the next line in half.\n *\n * The constants MUST match packages/arbi-blocks/src/components/GridView.tsx.\n */\n\n/** One multiline line: grid font-size (14) × its line-height (1.35) = 18.9px. */\nexport const LINE_PX = 14 * 1.35\n/** Fixed per-row chrome: 16px vertical padding + 2px border. */\nexport const CHROME = 18\nexport const MIN_LINES = 1\nexport const MAX_LINES = 10\n\n/**\n * Row height (px) that renders exactly `lines` fully-visible text lines. Uses\n * `ceil` (not `round`) so the value never lands just BELOW a boundary, where the\n * grid's own `floor` would drop back to `lines - 1`.\n */\nexport const rowHeightForLines = (lines: number) => Math.ceil(lines * LINE_PX + CHROME)\n\n/** How many whole lines a given row height renders as — the grid's own formula,\n * so the density slider position matches what's actually on screen. */\nexport const linesForRowHeight = (height: number) =>\n Math.max(MIN_LINES, Math.min(MAX_LINES, Math.floor((height - CHROME) / LINE_PX)))\n\nexport const ROW_MIN = rowHeightForLines(MIN_LINES)\nexport const ROW_MAX = rowHeightForLines(MAX_LINES)\n","/**\n * RowDensityControl\n *\n * Row-height adjuster for the documents AND facts tables. It steps in whole\n * TEXT LINES, not arbitrary pixels: the grid (packages/arbi-blocks GridView)\n * clamps a multiline cell to `floor((rowHeight - chrome) / lineHeight)` lines,\n * so a px-based step smaller than a line would grow the row while revealing only\n * a sliver of the next line (text cut in half). Snapping every value to a line\n * boundary makes each increment add exactly one fully-visible line.\n */\n\nimport { Slider, Tooltip, TooltipTrigger, TooltipContent } from '@arbidocs/react/ui'\nimport { ListChevronsUpDown } from 'lucide-react'\nimport { MIN_LINES, MAX_LINES, linesForRowHeight, rowHeightForLines } from './row-density'\n\ninterface RowDensityControlProps {\n rowHeight: number\n onRowHeightChange: (height: number) => void\n /** Testid stem — \"documents-density\" (default) keeps the original ids. */\n testId?: string\n}\n\nexport function RowDensityControl({\n rowHeight,\n onRowHeightChange,\n testId = 'documents-density',\n}: RowDensityControlProps) {\n const lines = linesForRowHeight(rowHeight)\n const setLines = (next: number) =>\n onRowHeightChange(rowHeightForLines(Math.max(MIN_LINES, Math.min(MAX_LINES, next))))\n\n return (\n <Tooltip delayDuration={300}>\n <TooltipTrigger asChild>\n <div className=\"flex h-7 items-center gap-1.5 rounded-md border border-input px-2 pointer-coarse:h-11\">\n <span className=\"hidden text-xs text-muted-foreground md:inline\">Rows</span>\n <button\n type=\"button\"\n aria-label=\"Shorter rows\"\n data-testid={`${testId}-out`}\n onClick={() => setLines(lines - 1)}\n disabled={lines <= MIN_LINES}\n className=\"flex items-center justify-center text-muted-foreground hover:text-foreground disabled:opacity-40 pointer-coarse:size-11\"\n >\n <ListChevronsUpDown className=\"h-4 w-4\" />\n </button>\n {/* The slider works in LINE units — one notch per line — so it can only\n land on line-boundary heights. */}\n <Slider\n value={[lines]}\n min={MIN_LINES}\n max={MAX_LINES}\n step={1}\n onValueChange={([value]) => setLines(value)}\n aria-label=\"Row height\"\n data-testid={testId}\n className=\"w-20\"\n />\n </div>\n </TooltipTrigger>\n <TooltipContent>\n Row height: {lines} line{lines === 1 ? '' : 's'}\n </TooltipContent>\n </Tooltip>\n )\n}\n","import type { ReactNode } from 'react'\nimport { FolderOpen } from 'lucide-react'\nimport { Popover, PopoverContent, PopoverTrigger, cn } from '@arbidocs/react/ui'\n\nexport interface FolderCellProps {\n /** Stored folder path; empty/null renders an em dash. */\n folder: string | null | undefined\n /** Breadcrumb segments, already formatted for display (provider roots shortened). */\n segments: string[]\n /** Leading glyph for connector folders (brand mark); falls back to a folder icon. */\n icon?: ReactNode\n /** Editable cells open `picker` in a popover on click. */\n isEditable: boolean\n /** Popover body (the searchable folder list); only rendered for editable cells. */\n picker?: ReactNode\n className?: string\n}\n\n/** Breadcrumb \"a / b / c\" where all but the last segment are muted. */\nexport function FolderBreadcrumb({\n segments,\n size = 'xs',\n}: {\n segments: string[]\n /** Text size of the segments: `xs` in grid cells, `sm` in form fields. */\n size?: 'xs' | 'sm'\n}) {\n const text = size === 'sm' ? 'text-sm' : 'text-xs'\n return (\n <span data-slot=\"folder-breadcrumb\" className=\"min-w-0 truncate\">\n {segments.map((part, i, arr) => (\n <span key={i} className=\"inline-flex items-center gap-0.5\">\n {i > 0 && <span className={`mx-0.5 ${text} text-muted-foreground/50`}>/</span>}\n <span className={i < arr.length - 1 ? `${text} text-muted-foreground` : ''}>{part}</span>\n </span>\n ))}\n </span>\n )\n}\n\n/**\n * Grid cell for a document's folder. Uses the native `title` attribute instead of a Tooltip:\n * every visible row renders one, so Radix tooltip instances would sit in the scroll hot path.\n */\nexport function FolderCell({\n folder,\n segments,\n icon,\n isEditable,\n picker,\n className,\n}: FolderCellProps) {\n const display = folder ? (\n <>\n {icon ?? <FolderOpen className=\"h-3.5 w-3.5 flex-none shrink-0 text-muted-foreground\" />}\n <FolderBreadcrumb segments={segments} />\n </>\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n )\n const title = folder || undefined\n\n if (!isEditable) {\n return (\n <div\n data-slot=\"folder-cell\"\n title={title}\n className={cn('flex h-full w-full min-w-0 items-center gap-1.5 text-sm', className)}\n >\n {display}\n </div>\n )\n }\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"folder-cell\"\n title={title}\n className={cn(\n 'flex h-full w-full min-w-0 cursor-pointer items-center gap-1.5 text-left text-sm hover:text-primary',\n className\n )}\n >\n {display}\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-max min-w-[220px] max-w-[min(640px,92vw)] p-0\"\n align=\"start\"\n side=\"bottom\"\n sideOffset={4}\n >\n {picker}\n </PopoverContent>\n </Popover>\n )\n}\n","import { useMemo, type ReactNode } from 'react'\nimport { Check, ChevronsUpDown, FolderOpen } from 'lucide-react'\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@arbidocs/react/ui'\nimport { FolderBreadcrumb } from './cells/FolderCell'\nimport {\n LabelPickerList,\n DEFAULT_LABEL_MULTI_SELECT_LABELS,\n type LabelMultiSelectLabels,\n type LabelOption,\n} from './cells/LabelMultiSelect'\n\n/**\n * Parts of the document \"card\" form (one labelled field per column): read-only values, the folder\n * and label pickers, a native select and the hover attribution of who last changed a value.\n */\n\nconst FIELD_SURFACE =\n 'rounded-md border border-input bg-muted/40 text-sm transition-colors hover:bg-background'\n\nexport interface FieldValueProps {\n tone?: 'default' | 'strong' | 'muted'\n isMono?: boolean\n isTruncated?: boolean\n children: ReactNode\n}\n\n/** A read-only value of a field. */\nexport function FieldValue({ tone = 'default', isMono, isTruncated, children }: FieldValueProps) {\n return (\n <span\n data-slot=\"field-value\"\n className={cn(\n 'text-sm',\n tone === 'strong' && 'font-semibold',\n tone === 'muted' && 'text-muted-foreground',\n isMono && 'font-mono',\n isTruncated && 'truncate'\n )}\n >\n {children}\n </span>\n )\n}\n\nexport interface FieldFolderSelectProps {\n /** Current folder path, if any. */\n folder: string | null | undefined\n /** Searchable folder list (host-bound `FolderCommandList`). */\n picker: ReactNode\n}\n\n/** Folder field: a trigger showing the breadcrumb, opening the folder picker in a popover. */\nexport function FieldFolderSelect({ folder, picker }: FieldFolderSelectProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"field-folder-select\"\n className={cn(\n FIELD_SURFACE,\n 'flex h-9 w-full min-w-0 items-center gap-1.5 px-3 text-left hover:text-primary pointer-coarse:h-11'\n )}\n >\n {folder ? (\n <>\n <FolderOpen className=\"size-3.5 flex-none shrink-0 text-yellow-600\" />\n <FolderBreadcrumb segments={folder.split('/')} size=\"sm\" />\n </>\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n )}\n <ChevronsUpDown className=\"ml-auto size-3.5 shrink-0 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-max min-w-[var(--radix-popover-trigger-width)] max-w-[min(640px,92vw)] p-0\"\n align=\"start\"\n side=\"bottom\"\n sideOffset={4}\n >\n {picker}\n </PopoverContent>\n </Popover>\n )\n}\n\n/** Read-only folder. */\nexport function FieldFolderValue({ folder }: { folder: string | null | undefined }) {\n return (\n <div className=\"flex items-center gap-1.5 text-sm\">\n {folder ? (\n <>\n <FolderOpen className=\"size-3.5 shrink-0 text-yellow-600\" />\n <span>{folder}</span>\n </>\n ) : (\n <span className=\"text-muted-foreground\">—</span>\n )}\n </div>\n )\n}\n\nexport interface FieldLabelsSelectProps {\n options: LabelOption[]\n appliedIds: ReadonlySet<string>\n /** Labels shown as check marks in the field (defaults to the applied ones). Pass fewer to list\n * the selection elsewhere, e.g. in a dialog that renders it beside the field. */\n displayedIds?: ReadonlySet<string>\n onToggle: (id: string) => void\n /** Create a label and apply it; omit to make the picker toggle-only. */\n onCreate?: (name: string) => void\n emptyText?: string\n labels?: Partial<LabelMultiSelectLabels>\n}\n\n/** Labels field: the applied labels as check marks; click to open the label picker. */\nexport function FieldLabelsSelect({\n options,\n appliedIds,\n displayedIds = appliedIds,\n onToggle,\n onCreate,\n emptyText = 'Click to add',\n labels,\n}: FieldLabelsSelectProps) {\n const applied = useMemo(\n () => options.filter((o) => displayedIds.has(o.id)),\n [options, displayedIds]\n )\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"field-labels-select\"\n className={cn(\n FIELD_SURFACE,\n 'flex min-h-9 w-full cursor-pointer items-center px-3 py-1.5 text-left pointer-coarse:min-h-11'\n )}\n >\n <div className=\"flex min-h-[28px] flex-wrap items-center gap-1.5\">\n {applied.length === 0 && (\n <span className=\"text-sm italic text-muted-foreground\">{emptyText}</span>\n )}\n {applied.map((o) => (\n <span key={o.id} className=\"inline-flex items-center gap-1 text-sm font-medium\">\n <span\n className=\"flex size-4 shrink-0 items-center justify-center rounded border-2\"\n style={{ borderColor: o.color, backgroundColor: o.color }}\n >\n <Check className=\"size-3 text-white\" strokeWidth={3} />\n </span>\n <span className=\"max-w-[280px] truncate\">{o.name}</span>\n </span>\n ))}\n </div>\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[360px] p-0\" align=\"start\" side=\"bottom\" sideOffset={4}>\n <LabelPickerList\n options={options}\n appliedIds={appliedIds}\n onToggle={onToggle}\n onCreate={onCreate}\n labels={{ ...DEFAULT_LABEL_MULTI_SELECT_LABELS, ...labels }}\n />\n </PopoverContent>\n </Popover>\n )\n}\n\nexport interface FieldNativeSelectProps {\n value: string\n options: string[]\n onChange: (value: string) => void\n /** Text of the empty option. */\n emptyLabel?: string\n ariaLabel?: string\n}\n\n/** A single-choice field (a native `select`: reliable on touch and with assistive tech). */\nexport function FieldNativeSelect({\n value,\n options,\n onChange,\n emptyLabel = '--',\n ariaLabel,\n}: FieldNativeSelectProps) {\n return (\n <select\n value={value}\n aria-label={ariaLabel}\n onChange={(e) => onChange(e.target.value)}\n className=\"h-9 w-full rounded-md border border-input bg-muted/40 px-3 text-sm transition-colors focus:bg-background focus:outline-none focus:ring-1 focus:ring-ring pointer-coarse:h-11\"\n >\n <option value=\"\">{emptyLabel}</option>\n {options.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n )\n}\n\nexport interface FieldAttributionProps {\n /** Avatar of whoever last changed the value. */\n avatar: ReactNode\n /** Formatted date of that change. */\n date: string\n /** Tooltip lines (\"Created ... by ...\", \"Updated ... by ...\"). */\n lines: string[]\n}\n\n/** Subtle \"who changed this and when\". */\nexport function FieldAttribution({ avatar, date, lines }: FieldAttributionProps) {\n return (\n <div className=\"flex items-center gap-1\" data-slot=\"field-attribution\">\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"flex items-center gap-1\">\n {avatar}\n <span className=\"text-sm text-muted-foreground\">{date}</span>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">\n {lines.map((line, i) => (\n <p key={i} className=\"text-sm\">\n {line}\n </p>\n ))}\n </TooltipContent>\n </Tooltip>\n </div>\n )\n}\n\n/**\n * Wraps an editable value and reveals `attribution` at its top-right on hover or keyboard focus\n * inside, and always on touch devices (there is no hover there).\n */\nexport function FieldWithAttribution({\n attribution,\n children,\n}: {\n attribution: ReactNode\n children: ReactNode\n}) {\n return (\n <div className=\"group/doctag relative\" data-slot=\"field-with-attribution\">\n {children}\n <div className=\"absolute right-0 top-0 bg-background/90 pl-2 opacity-0 transition-opacity group-focus-within/doctag:opacity-100 group-hover/doctag:opacity-100 pointer-coarse:opacity-100\">\n {attribution}\n </div>\n </div>\n )\n}\n","/**\n * Filter button for custom AG Grid header components.\n * Uses AG Grid's own CSS classes (ag-header-icon, ag-icon-filter) so it is\n * visually identical to the native filter button shown on standard columns.\n */\n\nimport { useState, useEffect, useRef } from 'react'\nimport type { IHeaderParams } from 'ag-grid-community'\n\ninterface FilterButtonProps {\n params: IHeaderParams\n colId: string\n}\n\nexport const FilterButton = ({ params, colId }: FilterButtonProps) => {\n const [isFilterActive, setIsFilterActive] = useState(false)\n const btnRef = useRef<HTMLSpanElement>(null)\n\n useEffect(() => {\n const check = () => setIsFilterActive(!!params.api.getFilterModel()[colId])\n check()\n params.api.addEventListener('filterChanged', check)\n return () => {\n if (!params.api.isDestroyed()) params.api.removeEventListener('filterChanged', check)\n }\n }, [params.api, colId])\n\n return (\n <span\n ref={btnRef}\n role=\"button\"\n aria-label=\"Filter\"\n onClick={(e) => {\n e.stopPropagation()\n if (btnRef.current) params.showFilter(btnRef.current)\n }}\n className={`ag-header-icon ag-header-cell-filter-button ag-header-label-icon ${isFilterActive ? 'ag-filter-active' : ''}`}\n aria-hidden=\"false\"\n >\n <span className=\"ag-icon ag-icon-filter\" />\n </span>\n )\n}\n","import { useCallback, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport { Check, FolderOpen, Minus, Plus, X } from 'lucide-react'\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n cn,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\n/** Every fixed string of the folder pickers. Pass a partial `labels` to translate or reword. */\nexport interface FolderPickerLabels {\n none: string\n removeFromFolder: string\n searchOrCreate: string\n noFolders: string\n create: (name: string) => string\n}\n\nexport const DEFAULT_FOLDER_PICKER_LABELS: FolderPickerLabels = {\n none: 'None',\n removeFromFolder: 'Remove from folder',\n searchOrCreate: 'Search or create...',\n noFolders: 'No folders yet',\n create: (name) => `Create \\u201c${name}\\u201d`,\n}\n\nexport interface FolderCommandListTestIds {\n create: string\n createOption: string\n remove: string\n /** Replaces the whole `folder-picker-option-<folder>` id. */\n option: (folder: string) => string\n}\n\n// ── Tree row ────────────────────────────────────────────────────────────────────────────────\n\nexport interface FolderPickerRowProps {\n label: string\n /** Optional leading glyph (e.g. a connector brand mark for provider roots). */\n icon?: ReactNode\n /** Shown at the right edge; omit for rows with nothing to count (e.g. an empty unread count). */\n count?: number\n depth: number\n isActive: boolean\n muted?: boolean\n /** Test id of the row button (none by default). */\n testId?: string\n /**\n * Draw a checkbox in the leading slot instead of the single-select tick. A list you can pick\n * SEVERAL rows from should look like one: a lone tick reads \"this is the current one\", a box\n * reads \"tick the ones you want\".\n */\n checkbox?: boolean\n /** Checkbox only: some descendants are selected, so show a dash, not a tick. */\n indeterminate?: boolean\n onClick: () => void\n}\n\n/** One folder row: indented by depth, with a count. Whole row is the target (44px on touch). */\nexport function FolderPickerRow({\n label,\n icon,\n count,\n depth,\n isActive,\n muted,\n checkbox,\n indeterminate,\n testId,\n onClick,\n}: FolderPickerRowProps) {\n return (\n <button\n type=\"button\"\n data-testid={testId}\n onClick={onClick}\n // The row IS the checkbox: a real <Checkbox> inside this button would nest one interactive\n // element in another and swallow the click. role + aria-checked carry the same meaning.\n role={checkbox ? 'checkbox' : undefined}\n aria-checked={checkbox ? (indeterminate ? 'mixed' : isActive) : undefined}\n style={{ paddingLeft: `${4 + depth * 14}px` }}\n className={cn(\n // `[&:hover]:`, not `hover:`: the latter compiles behind `@media (hover: hover)`, so on a\n // touchscreen whose PRIMARY pointer reports `hover: none` the row would never highlight\n // even with a real mouse attached. The arbitrary selector has no media gate.\n 'flex w-full items-center gap-1 rounded-sm py-1 pr-2 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&:hover]:bg-accent pointer-coarse:min-h-11',\n isActive && 'bg-primary/10',\n muted && !isActive && 'text-muted-foreground'\n )}\n >\n <span className=\"flex w-4 shrink-0 items-center justify-center\">\n {checkbox ? (\n <span\n className={cn(\n 'flex size-3.5 items-center justify-center rounded-[3px] border transition-colors',\n isActive || indeterminate\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-muted-foreground/40'\n )}\n >\n {indeterminate ? (\n <Minus className=\"size-2.5\" />\n ) : (\n isActive && <Check className=\"size-2.5\" />\n )}\n </span>\n ) : (\n isActive && <Check className=\"size-3.5 text-primary\" />\n )}\n </span>\n {icon}\n {label !== '' && (\n <span className={cn('min-w-0 truncate', isActive && 'font-semibold text-primary')}>\n {label}\n </span>\n )}\n {count !== undefined && (\n <span className=\"ml-auto pl-2 text-sm font-semibold text-muted-foreground\">{count}</span>\n )}\n </button>\n )\n}\n\n// ── Tree ────────────────────────────────────────────────────────────────────────────────────\n\nexport interface FolderTreeNode {\n path: string\n label: string\n depth: number\n count: number\n /** Replaces the label's default look (provider roots show a brand mark). */\n icon?: ReactNode\n}\n\nexport interface FolderTreeProps {\n nodes: FolderTreeNode[]\n unfiledCount: number\n /** string = folder path selected, null = Unfiled selected, undefined = nothing selected. */\n value: string | null | undefined\n onChange: (folder: string | null) => void\n /** Show the Unfiled (\"None\") row even when it is empty. */\n showUnfiledAlways?: boolean\n labels?: Partial<FolderPickerLabels>\n}\n\n/** Folder hierarchy with an Unfiled option at the bottom. No \"All\" row: callers add their own. */\nexport function FolderTree({\n nodes,\n unfiledCount,\n value,\n onChange,\n showUnfiledAlways,\n labels,\n}: FolderTreeProps) {\n const l = { ...DEFAULT_FOLDER_PICKER_LABELS, ...labels }\n return (\n <div className=\"max-h-[240px] overflow-y-auto\">\n {nodes.map((node) => (\n <FolderPickerRow\n key={node.path}\n label={node.label}\n icon={node.icon}\n count={node.count}\n depth={node.depth}\n isActive={value === node.path}\n onClick={() => onChange(node.path)}\n />\n ))}\n {(unfiledCount > 0 || showUnfiledAlways) && (\n <>\n {nodes.length > 0 && <div className=\"my-1 border-t border-border\" />}\n <FolderPickerRow\n label={l.none}\n count={unfiledCount}\n depth={0}\n isActive={value === null}\n muted\n onClick={() => onChange(null)}\n />\n </>\n )}\n </div>\n )\n}\n\n// ── Searchable list ─────────────────────────────────────────────────────────────────────────\n\nfunction FolderBreadcrumb({ folder }: { folder: string }) {\n const parts = folder.split('/')\n return (\n <span className=\"whitespace-nowrap\">\n {parts.map((part, i) => (\n <span key={i} className=\"inline-flex items-center gap-0.5\">\n {i > 0 && <span className=\"mx-0.5 text-sm text-muted-foreground/50\">/</span>}\n <span className={i < parts.length - 1 ? 'text-sm text-muted-foreground' : ''}>\n {part}\n </span>\n </span>\n ))}\n </span>\n )\n}\n\nexport interface FolderCommandListProps {\n /** Existing folder paths (the host derives them from its documents). */\n folders: string[]\n /** Selected folder (null = unfiled, undefined = no selection). */\n value?: string | null\n /** A folder was picked or a new one created. */\n onSelect: (folder: string | null) => void\n /** Show the remove / move-to-root option. */\n showRemove?: boolean\n /** Wins over `labels.removeFromFolder`. */\n removeLabel?: string\n /** Wins over `labels.searchOrCreate`. */\n placeholder?: string\n autoFocus?: boolean\n labels?: Partial<FolderPickerLabels>\n /** Overrides for the test ids (defaults keep the current ids). */\n testIds?: Partial<FolderCommandListTestIds>\n}\n\n/**\n * Searchable folder picker: filter existing folders, create one by typing a new name, optional\n * \"Remove from folder\". Shows hierarchy as breadcrumbs.\n */\nexport function FolderCommandList({\n folders,\n value,\n onSelect,\n showRemove = false,\n removeLabel,\n placeholder,\n autoFocus = true,\n labels,\n testIds,\n}: FolderCommandListProps) {\n const l = { ...DEFAULT_FOLDER_PICKER_LABELS, ...labels }\n const [search, setSearch] = useState('')\n const trimmed = search.trim()\n const matchesExisting = folders.some((f) => f.toLowerCase() === trimmed.toLowerCase())\n\n const handleCreate = useCallback(\n (name: string) => {\n const next = name.trim()\n if (!next) return\n onSelect(next)\n setSearch('')\n },\n [onSelect]\n )\n\n return (\n <Command shouldFilter={true}>\n <CommandInput\n placeholder={placeholder ?? l.searchOrCreate}\n value={search}\n onValueChange={setSearch}\n autoFocus={autoFocus}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && trimmed && !matchesExisting) {\n e.preventDefault()\n handleCreate(search)\n }\n }}\n />\n <CommandList>\n <CommandEmpty>\n {trimmed ? (\n <button\n type=\"button\"\n data-testid={testIdOr(testIds?.create, { testId: 'folder-picker-create' })}\n onClick={() => handleCreate(search)}\n onPointerDown={(e) => e.preventDefault()}\n className=\"flex w-full cursor-pointer items-center gap-1.5 rounded px-2 py-1.5 text-left text-sm text-primary hover:bg-accent pointer-coarse:min-h-11\"\n >\n <Plus className=\"size-3.5 shrink-0\" />\n {l.create(trimmed)}\n </button>\n ) : (\n <span className=\"text-muted-foreground\">{l.noFolders}</span>\n )}\n </CommandEmpty>\n <CommandGroup>\n {folders.map((folder) => (\n <CommandItem\n key={folder}\n value={folder}\n data-testid={testIdOr(testIds?.option?.(folder), {\n testId: `folder-picker-option-${folder}`,\n })}\n onSelect={() => onSelect(folder)}\n onPointerDown={(e) => e.preventDefault()}\n className=\"cursor-pointer text-sm\"\n >\n <FolderOpen className=\"mr-1.5 size-3.5 flex-none shrink-0 text-yellow-text\" />\n <FolderBreadcrumb folder={folder} />\n {value === folder && (\n <span className=\"ml-auto flex-none text-sm text-primary\">✓</span>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n\n {trimmed && !matchesExisting && folders.length > 0 && (\n <CommandGroup>\n <CommandItem\n value={`__create__${trimmed}`}\n data-testid={testIdOr(testIds?.createOption, {\n testId: 'folder-picker-create-option',\n })}\n onSelect={() => handleCreate(search)}\n onPointerDown={(e) => e.preventDefault()}\n className=\"cursor-pointer text-sm text-primary\"\n >\n <Plus className=\"mr-1.5 size-3.5 shrink-0\" />\n <span>{l.create(trimmed)}</span>\n </CommandItem>\n </CommandGroup>\n )}\n\n {showRemove && (\n <CommandGroup>\n <CommandItem\n value=\"__none__\"\n data-testid={testIdOr(testIds?.remove, { testId: 'folder-picker-remove' })}\n onSelect={() => onSelect(null)}\n onPointerDown={(e) => e.preventDefault()}\n className=\"cursor-pointer text-sm text-muted-foreground\"\n >\n <X className=\"mr-1 size-3.5 shrink-0\" />\n <span>{removeLabel ?? l.removeFromFolder}</span>\n {value === null && <span className=\"ml-auto flex-none text-sm text-primary\">✓</span>}\n </CommandItem>\n </CommandGroup>\n )}\n </CommandList>\n </Command>\n )\n}\n","import type { ReactNode } from 'react'\nimport { ChevronDown, FolderOpen, FolderPlus } from 'lucide-react'\nimport { Button, Popover, PopoverContent, PopoverTrigger, cn } from '@arbidocs/react/ui'\nimport { FolderPickerRow } from '../FolderPicker'\nimport { testIdOr } from '../../chat/test-id'\n\n/** Every fixed string of the folder filter. Pass a partial `labels` to translate or reword. */\nexport interface FolderFilterLabels {\n all: string\n newFolder: string\n}\n\nexport const DEFAULT_FOLDER_FILTER_LABELS: FolderFilterLabels = {\n all: 'All',\n newFolder: 'New folder',\n}\n\nexport interface FolderFilterButtonProps {\n /** Text of the active folder (\"All\", \"None\", or the display path). */\n label: string\n /** Leading glyph for connector folders; falls back to a folder icon. */\n icon?: ReactNode\n /** A folder filter is active: the trigger takes the selection tint. */\n isActive: boolean\n open: boolean\n onOpenChange: (open: boolean) => void\n /** Total documents, shown on the \"All\" row. */\n allCount?: number\n /** When set, the popover starts with an \"All\" row; omit it for lists that have no \"All\". */\n onSelectAll?: () => void\n /** When set, the popover offers a \"New folder\" action. */\n onNewFolder?: () => void\n /** Slot: the folder tree picker. */\n children: ReactNode\n className?: string\n labels?: Partial<FolderFilterLabels>\n /** Test id of the trigger button (none by default). */\n testId?: string\n /** Overrides the \"New folder\" test id (default `explorer-new-folder`). */\n newFolderTestId?: string\n}\n\n/**\n * The folder filter control: a ghost button naming the active folder that opens a popover with\n * an \"All\" row, the folder tree (slot) and an optional \"New folder\" action.\n */\nexport function FolderFilterButton({\n label,\n icon,\n isActive,\n open,\n onOpenChange,\n allCount,\n onSelectAll,\n onNewFolder,\n children,\n className,\n labels,\n testId,\n newFolderTestId,\n}: FolderFilterButtonProps) {\n const l = { ...DEFAULT_FOLDER_FILTER_LABELS, ...labels }\n return (\n <Popover open={open} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n data-slot=\"folder-filter-button\"\n data-testid={testId}\n className={cn(\n 'h-7 shrink-0 gap-1.5 px-2 text-sm font-normal pointer-coarse:h-10',\n isActive && 'bg-accent font-medium text-accent-foreground',\n className\n )}\n >\n {icon ?? (\n <FolderOpen\n className={cn(\n 'h-3.5 w-3.5 shrink-0 text-muted-foreground',\n isActive && 'fill-muted-foreground/30'\n )}\n />\n )}\n <span className=\"max-w-[280px] truncate\">{label}</span>\n <ChevronDown className=\"h-4 w-4 text-foreground\" strokeWidth={2.5} />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"w-max min-w-56 max-w-[480px] p-1 shadow-lg\"\n align=\"start\"\n sideOffset={4}\n >\n {onSelectAll && (\n <>\n <FolderPickerRow\n label={l.all}\n count={allCount}\n depth={0}\n isActive={!isActive}\n onClick={onSelectAll}\n />\n <div className=\"my-1 border-t border-border\" />\n </>\n )}\n {children}\n {onNewFolder && (\n <>\n <div className=\"my-1 border-t border-border\" />\n <button\n type=\"button\"\n onClick={onNewFolder}\n data-testid={testIdOr(newFolderTestId, { testId: 'explorer-new-folder' })}\n className=\"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground pointer-coarse:min-h-11\"\n >\n <FolderPlus className=\"h-3.5 w-3.5\" />\n {l.newFolder}\n </button>\n </>\n )}\n </PopoverContent>\n </Popover>\n )\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkGGTUMLCT_cjs = require('./chunk-GGTUMLCT.cjs');
|
|
5
|
+
var chunkKUT2Y7JF_cjs = require('./chunk-KUT2Y7JF.cjs');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
function ConnectedStreamedWordArtifact({
|
|
9
|
+
fontBaseUrl,
|
|
10
|
+
...props
|
|
11
|
+
}) {
|
|
12
|
+
const adapter = chunkGGTUMLCT_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
|
|
13
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkKUT2Y7JF_cjs.StreamedWordArtifact, { ...props, adapter });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.ConnectedStreamedWordArtifact = ConnectedStreamedWordArtifact;
|
|
17
|
+
//# sourceMappingURL=chunk-YIFCLNII.cjs.map
|
|
18
|
+
//# sourceMappingURL=chunk-YIFCLNII.cjs.map
|