@flamingo-stack/openframe-frontend-core 0.0.764 → 0.0.766
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/build/export-map.json +1 -1
- package/dist/chat-protocol/decode.d.ts +0 -1
- package/dist/chat-protocol/decode.d.ts.map +1 -1
- package/dist/chat-protocol/decode.js +1 -3
- package/dist/chat-protocol/index.d.ts +1 -0
- package/dist/chat-protocol/index.d.ts.map +1 -1
- package/dist/chat-protocol/index.js +2 -0
- package/dist/{chunk-FQSXZC2K.cjs → chunk-2JRSYWFP.cjs} +3 -3
- package/dist/{chunk-I5MSCD57.cjs → chunk-3LW5TD54.cjs} +7 -3
- package/dist/{chunk-7AM3AFM4.cjs → chunk-4YIDZCTL.cjs} +1 -3
- package/dist/{chunk-SVP6DJFL.cjs → chunk-57B5RUYD.cjs} +2 -2
- package/dist/{chunk-R3TWQ3ZJ.cjs → chunk-5P4TDV7V.cjs} +16 -7
- package/dist/chunk-65VVJSQZ.cjs +109 -0
- package/dist/{chunk-LNGR4DXA.cjs → chunk-7U3ELNGC.cjs} +103 -61
- package/dist/{chunk-T5FRANE6.cjs → chunk-7VI7TOGI.cjs} +509 -353
- package/dist/{chunk-5AV5R5RC.cjs → chunk-7XFVUUVZ.cjs} +14 -14
- package/dist/{chunk-M7YZGRAV.cjs → chunk-AAECWUNV.cjs} +35 -8
- package/dist/{chunk-YUMFVQIN.cjs → chunk-C42WIUH6.cjs} +11 -5
- package/dist/{chunk-22XAPV6N.cjs → chunk-DGNBXZXT.cjs} +1069 -1020
- package/dist/{chunk-HOTM4UM6.cjs → chunk-E76ONBKF.cjs} +28 -0
- package/dist/{chunk-PERN37KO.cjs → chunk-F7R3U5EN.cjs} +5 -25
- package/dist/{chunk-K6VWTUCH.cjs → chunk-FL2RMEDX.cjs} +2 -2
- package/dist/chunk-FZB4RMRK.cjs +695 -0
- package/dist/{chunk-BIA77I6B.cjs → chunk-GTONIRJU.cjs} +56 -54
- package/dist/{chunk-3FC6AKEJ.cjs → chunk-HNQRY6RU.cjs} +200 -87
- package/dist/chunk-INI4ADPT.cjs +495 -0
- package/dist/{chunk-JD7CL2I6.cjs → chunk-JGWN6GH5.cjs} +11 -7
- package/dist/{chunk-RYSNH2VY.cjs → chunk-JKQVKWLB.cjs} +258 -179
- package/dist/{chunk-EQZXJUYV.cjs → chunk-JTSUAHDL.cjs} +73 -51
- package/dist/chunk-K3IHNXR4.cjs +40 -0
- package/dist/{chunk-EFTUFJS2.cjs → chunk-LELS4XMX.cjs} +20 -22
- package/dist/{chunk-ZCU2PYCW.cjs → chunk-MPTMT773.cjs} +62 -62
- package/dist/{chunk-LVKUMVUJ.cjs → chunk-NBVZIHGS.cjs} +12 -8
- package/dist/{chunk-IDGOMHTC.cjs → chunk-NF3PBWDJ.cjs} +521 -413
- package/dist/{chunk-7GUWPGB4.cjs → chunk-NJMZ3N7Q.cjs} +44 -44
- package/dist/{chunk-OJJ4RL2T.cjs → chunk-R3JX4MXD.cjs} +4 -4
- package/dist/{chunk-GY2JESOC.cjs → chunk-RB7VLVMD.cjs} +15 -15
- package/dist/{chunk-47GZ33ND.cjs → chunk-REJMFXGD.cjs} +198 -73
- package/dist/chunk-RMUSPTJN.cjs +102 -0
- package/dist/{chunk-3RFQPQ7Z.cjs → chunk-RNLRS4ID.cjs} +3 -3
- package/dist/{chunk-ZG6F5A3A.cjs → chunk-RTBYQWAV.cjs} +286 -201
- package/dist/{chunk-63N4FN5V.cjs → chunk-SETFUCZA.cjs} +7 -7
- package/dist/{chunk-2QMBXGMQ.cjs → chunk-TF5D5MNO.cjs} +222 -120
- package/dist/{chunk-NET74KSQ.cjs → chunk-TZ4GKUO2.cjs} +5 -5
- package/dist/{chunk-JJ2S6C5U.cjs → chunk-UW7UWUZU.cjs} +105 -117
- package/dist/{chunk-MWLD6NXV.cjs → chunk-VFZFCRAL.cjs} +4 -6
- package/dist/{chunk-VL6IXTAI.cjs → chunk-VRDHAR3X.cjs} +4229 -3918
- package/dist/{chunk-NJS7FQRW.cjs → chunk-VYYLYZUC.cjs} +207 -74
- package/dist/{chunk-NO5UJLLQ.cjs → chunk-WEANWBJH.cjs} +6 -1
- package/dist/{chunk-XFNWHCRM.cjs → chunk-WO3XO27C.cjs} +13 -13
- package/dist/{chunk-L2V7K7RR.cjs → chunk-X7ECVSVN.cjs} +43 -41
- package/dist/chunk-XFRBEXQN.cjs +304 -0
- package/dist/{chunk-AKK3EO37.cjs → chunk-XIFEZ2JT.cjs} +35 -23
- package/dist/{chunk-XCH7SPGI.cjs → chunk-XVFM6SJA.cjs} +61 -52
- package/dist/{chunk-3RYIF4OW.cjs → chunk-XXJL5GY3.cjs} +3 -3
- package/dist/{chunk-GZKWF6NH.cjs → chunk-XZ6DKGT4.cjs} +34 -34
- package/dist/{chunk-74ALTXXC.cjs → chunk-YL6ZB2SR.cjs} +1624 -1440
- package/dist/{chunk-TSJUL6IH.cjs → chunk-YRFWOJF4.cjs} +16 -8
- package/dist/{chunk-HTRILBJD.cjs → chunk-YXDHVHB2.cjs} +30 -13
- package/dist/{chunk-RO72PRQI.cjs → chunk-ZRDMGMY7.cjs} +75 -50
- package/dist/{chunk-2IFCRPNP.cjs → chunk-ZV45VS6K.cjs} +369 -433
- package/dist/{cloud-tenants-N5CLYDPU.cjs → cloud-tenants-U2KMEIO7.cjs} +35 -39
- package/dist/components/agent-identity.d.ts +1 -2
- package/dist/components/agent-identity.d.ts.map +1 -1
- package/dist/components/agent-identity.js +0 -1
- package/dist/components/agent-mark.d.ts +4 -6
- package/dist/components/agent-mark.d.ts.map +1 -1
- package/dist/components/agent-mark.js +7 -8
- package/dist/components/authors/author-detail-view.d.ts.map +1 -1
- package/dist/components/authors/author-detail-view.js +51 -18
- package/dist/components/calendar.cjs +10 -10
- package/dist/components/case-studies/entity-quotes-panel.d.ts +6 -4
- package/dist/components/case-studies/entity-quotes-panel.d.ts.map +1 -1
- package/dist/components/case-studies/entity-quotes-panel.js +44 -11
- package/dist/components/case-studies/index.cjs +140 -70
- package/dist/components/case-studies/index.d.ts +2 -2
- package/dist/components/case-studies/index.d.ts.map +1 -1
- package/dist/components/case-studies/index.js +5 -2
- package/dist/components/case-studies/quote-cards-strip.d.ts +23 -2
- package/dist/components/case-studies/quote-cards-strip.d.ts.map +1 -1
- package/dist/components/case-studies/quote-cards-strip.js +48 -10
- package/dist/components/categories-cart.d.ts +7 -0
- package/dist/components/categories-cart.d.ts.map +1 -1
- package/dist/components/categories-cart.js +58 -36
- package/dist/components/category-card.js +1 -1
- package/dist/components/chat/chat-attachment-bar.js +1 -1
- package/dist/components/chat/chat-container.d.ts.map +1 -1
- package/dist/components/chat/chat-container.js +2 -1
- package/dist/components/chat/chat-ticket-list.d.ts +0 -1
- package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
- package/dist/components/chat/chat-turn.d.ts +31 -1
- package/dist/components/chat/chat-turn.d.ts.map +1 -1
- package/dist/components/chat/chat-turn.js +85 -19
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.js +1 -1
- package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +0 -15
- package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/admin-content-card-grid.js +2 -38
- package/dist/components/chat/entity-cards/admin-content-card.d.ts +15 -0
- package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/admin-content-card.js +52 -10
- package/dist/components/chat/entity-cards/blog-card.d.ts +9 -2
- package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/blog-card.js +49 -33
- package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/campaign-card-admin.js +4 -11
- package/dist/components/chat/entity-cards/case-study-card.d.ts +27 -9
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/case-study-card.js +80 -54
- package/dist/components/chat/entity-cards/chat-ticket-item.d.ts +7 -0
- package/dist/components/chat/entity-cards/chat-ticket-item.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/chat-ticket-item.js +24 -28
- package/dist/components/chat/entity-cards/customer-interview-card.d.ts +9 -2
- package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/customer-interview-card.js +39 -36
- package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/data-room-doc-card.js +14 -16
- package/dist/components/chat/entity-cards/design-doc-card.d.ts +8 -2
- package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/design-doc-card.js +37 -43
- package/dist/components/chat/entity-cards/dispatch.d.ts +2 -5
- package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/dispatch.js +6 -6
- package/dist/components/chat/entity-cards/employee-entry-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/employee-entry-card.js +5 -5
- package/dist/components/chat/entity-cards/entity-author-card.d.ts +33 -6
- package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/entity-author-card.js +98 -32
- package/dist/components/chat/entity-cards/entity-portrait-card.d.ts +9 -0
- package/dist/components/chat/entity-cards/entity-portrait-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/entity-portrait-card.js +46 -18
- package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/generic-entity-card.js +14 -17
- package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/github-activity-card.js +15 -20
- package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/hubspot-ticket-card.js +14 -19
- package/dist/components/chat/entity-cards/index.d.ts +8 -7
- package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/index.js +21 -8
- package/dist/components/chat/entity-cards/investor-update-card.d.ts +9 -3
- package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/investor-update-card.js +28 -28
- package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts +11 -2
- package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/onboarding-guide-card.js +66 -63
- package/dist/components/chat/entity-cards/program-card.d.ts +9 -2
- package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/program-card.js +69 -58
- package/dist/components/chat/entity-cards/roadmap-card.d.ts +10 -1
- package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/roadmap-card.js +148 -156
- package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/roadmap-vote-button.js +5 -1
- package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/slack-message-card.js +23 -18
- package/dist/components/chat/hooks/index.d.ts +7 -1
- package/dist/components/chat/hooks/index.d.ts.map +1 -1
- package/dist/components/chat/hooks/index.js +8 -1
- package/dist/components/chat/hooks/use-ask-prompts.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-ask-prompts.js +3 -1
- package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +1 -1
- package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat-history-hydration.d.ts +1 -1
- package/dist/components/chat/hooks/use-chat-history-hydration.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat.d.ts +1 -2
- package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +0 -2
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-nats-chat-adapter.js +0 -8
- package/dist/components/chat/hooks/use-proxied-image-url.d.ts +17 -13
- package/dist/components/chat/hooks/use-proxied-image-url.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-proxied-image-url.js +10 -8
- package/dist/components/chat/hooks/use-slash-commands.d.ts +1 -2
- package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +1 -8
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-sse-chat-adapter.js +1 -1
- package/dist/components/chat/index.cjs +44 -29
- package/dist/components/chat/stream/chat-stream-reducer.d.ts +1 -1
- package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
- package/dist/components/chat/stream/chat-stream-reducer.js +1 -1
- package/dist/components/chat/types/entities/index.d.ts +6 -4
- package/dist/components/chat/types/entities/index.d.ts.map +1 -1
- package/dist/components/chat/types/entities/index.js +4 -4
- package/dist/components/chat/types/entities/investor-update.d.ts +1 -1
- package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -1
- package/dist/components/chat/types/entities/program-types.d.ts +2 -1
- package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
- package/dist/components/chat/types/entities/program-types.js +1 -4
- package/dist/components/chat/utils/compact-card-classes.d.ts +9 -1
- package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
- package/dist/components/chat/utils/compact-card-classes.js +11 -2
- package/dist/components/chat/utils/compact-card-skeleton.d.ts +40 -0
- package/dist/components/chat/utils/compact-card-skeleton.d.ts.map +1 -0
- package/dist/components/chat/utils/compact-card-skeleton.js +61 -0
- package/dist/components/chat/utils/icon-library.d.ts +0 -1
- package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
- package/dist/components/chat/utils/index.d.ts +5 -3
- package/dist/components/chat/utils/index.d.ts.map +1 -1
- package/dist/components/chat/utils/index.js +3 -2
- package/dist/components/chat/utils/scroll-anchor.d.ts +1 -2
- package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -1
- package/dist/components/chat/utils/scroll-anchor.js +0 -1
- package/dist/components/chat/utils/source-row-cta.d.ts +0 -2
- package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
- package/dist/components/chat/utils/source-row-cta.js +1 -2
- package/dist/components/comment-card.d.ts +15 -0
- package/dist/components/comment-card.d.ts.map +1 -1
- package/dist/components/comment-card.js +178 -119
- package/dist/components/comment-thread.d.ts +29 -0
- package/dist/components/comment-thread.d.ts.map +1 -1
- package/dist/components/comment-thread.js +76 -18
- package/dist/components/contact/index.cjs +36 -40
- package/dist/components/content-loading-container.d.ts +1 -1
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/doc-viewer.js +10 -9
- package/dist/components/docs/index.cjs +39 -43
- package/dist/components/docs/skeletons.d.ts +0 -5
- package/dist/components/docs/skeletons.d.ts.map +1 -1
- package/dist/components/docs/skeletons.js +30 -50
- package/dist/components/docs/use-document-tree.d.ts +0 -1
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/docs/use-document-tree.js +6 -1
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
- package/dist/components/embeds/embed-iframe.js +3 -0
- package/dist/components/embeds/index.cjs +38 -40
- package/dist/components/embeds/index.d.ts +1 -1
- package/dist/components/embeds/index.d.ts.map +1 -1
- package/dist/components/embeds/index.js +2 -1
- package/dist/components/embeds/markdown-image.d.ts.map +1 -1
- package/dist/components/embeds/markdown-image.js +5 -2
- package/dist/components/embeds/og-link-preview.d.ts +7 -3
- package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
- package/dist/components/embeds/og-link-preview.js +106 -62
- package/dist/components/faq/faq-document-page.d.ts +5 -1
- package/dist/components/faq/faq-document-page.d.ts.map +1 -1
- package/dist/components/faq/faq-document-page.js +5 -1
- package/dist/components/faq/faq-section.d.ts +34 -1
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/faq-section.js +146 -59
- package/dist/components/faq/index.cjs +41 -41
- package/dist/components/faq/index.d.ts +1 -1
- package/dist/components/faq/index.d.ts.map +1 -1
- package/dist/components/faq/index.js +9 -1
- package/dist/components/faq-accordion.d.ts +15 -0
- package/dist/components/faq-accordion.d.ts.map +1 -1
- package/dist/components/faq-accordion.js +37 -9
- package/dist/components/features/ai-enrich/AIStatusIndicator.d.ts.map +1 -1
- package/dist/components/features/ai-enrich/AIStatusIndicator.js +2 -1
- package/dist/components/features/approval-level.d.ts +15 -1
- package/dist/components/features/approval-level.d.ts.map +1 -1
- package/dist/components/features/approval-level.js +42 -6
- package/dist/components/features/capability-explorer.d.ts +5 -1
- package/dist/components/features/capability-explorer.d.ts.map +1 -1
- package/dist/components/features/capability-explorer.js +42 -37
- package/dist/components/features/cards-strip.d.ts +9 -0
- package/dist/components/features/cards-strip.d.ts.map +1 -1
- package/dist/components/features/cards-strip.js +35 -11
- package/dist/components/features/command-box.d.ts +19 -0
- package/dist/components/features/command-box.d.ts.map +1 -1
- package/dist/components/features/command-box.js +103 -11
- package/dist/components/features/conversation-card.d.ts +70 -5
- package/dist/components/features/conversation-card.d.ts.map +1 -1
- package/dist/components/features/conversation-card.js +146 -13
- package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
- package/dist/components/features/devices/device-selector/device-selector.js +1 -0
- package/dist/components/features/devices/devices-panel-view.d.ts +1 -1
- package/dist/components/features/devices/devices-panel-view.js +1 -1
- package/dist/components/features/entity-tag-badges.d.ts +32 -7
- package/dist/components/features/entity-tag-badges.d.ts.map +1 -1
- package/dist/components/features/entity-tag-badges.js +73 -9
- package/dist/components/features/entity-video-section.d.ts +14 -14
- package/dist/components/features/entity-video-section.d.ts.map +1 -1
- package/dist/components/features/entity-video-section.js +29 -22
- package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
- package/dist/components/features/figma-prototype-viewer.js +3 -10
- package/dist/components/features/index.cjs +77 -39
- package/dist/components/features/index.d.ts +3 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +5 -0
- package/dist/components/features/knowledge-base/index.d.ts +2 -1
- package/dist/components/features/knowledge-base/index.d.ts.map +1 -1
- package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +0 -1
- package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -1
- package/dist/components/features/model-token-rates.d.ts.map +1 -1
- package/dist/components/features/model-token-rates.js +50 -78
- package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/approval-request-notification-tile.js +9 -5
- package/dist/components/features/notifications/notification-tile.d.ts +22 -7
- package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
- package/dist/components/features/notifications/notification-tile.js +42 -15
- package/dist/components/features/paths-display.d.ts +9 -0
- package/dist/components/features/paths-display.d.ts.map +1 -1
- package/dist/components/features/paths-display.js +50 -5
- package/dist/components/features/platform-badge.d.ts +2 -0
- package/dist/components/features/platform-badge.d.ts.map +1 -1
- package/dist/components/features/platform-badge.js +33 -2
- package/dist/components/features/push-button-selector.d.ts +23 -1
- package/dist/components/features/push-button-selector.d.ts.map +1 -1
- package/dist/components/features/push-button-selector.js +114 -41
- package/dist/components/features/remote-session/index.d.ts +2 -2
- package/dist/components/features/remote-session/index.d.ts.map +1 -1
- package/dist/components/features/remote-session/index.js +3 -3
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +2 -0
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +18 -4
- package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-chat-panel.js +11 -2
- package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -6
- package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-desktop-view.js +27 -27
- package/dist/components/features/remote-session/remote-session-chat-panel.js +1 -1
- package/dist/components/features/status-filter-component.d.ts +19 -1
- package/dist/components/features/status-filter-component.d.ts.map +1 -1
- package/dist/components/features/status-filter-component.js +106 -43
- package/dist/components/features/use-video-warmup.d.ts +1 -1
- package/dist/components/features/use-video-warmup.d.ts.map +1 -1
- package/dist/components/features/use-video-warmup.js +2 -5
- package/dist/components/features/use-walkthrough-video.d.ts.map +1 -1
- package/dist/components/features/use-walkthrough-video.js +4 -1
- package/dist/components/features/video-bites-strip.d.ts +42 -1
- package/dist/components/features/video-bites-strip.d.ts.map +1 -1
- package/dist/components/features/video-bites-strip.js +100 -21
- package/dist/components/features/video-hover-preview.d.ts +1 -1
- package/dist/components/features/video-hover-preview.d.ts.map +1 -1
- package/dist/components/features/video.d.ts +9 -2
- package/dist/components/features/video.d.ts.map +1 -1
- package/dist/components/features/video.js +10 -5
- package/dist/components/features/walkthrough-video.d.ts.map +1 -1
- package/dist/components/features/walkthrough-video.js +5 -1
- package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/download-apps-page.js +65 -33
- package/dist/components/help-center-pages/index.cjs +410 -316
- package/dist/components/help-center-pages/trust-center-page.d.ts +21 -9
- package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-page.js +100 -67
- package/dist/components/help-center-pages/trust-center-sections.d.ts +19 -14
- package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-sections.js +124 -97
- package/dist/components/icon-display.d.ts.map +1 -1
- package/dist/components/icon-display.js +6 -0
- package/dist/components/index.cjs +1505 -380
- package/dist/components/index.d.ts +5 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +12 -2
- package/dist/components/interactive-wrapper.d.ts.map +1 -1
- package/dist/components/interactive-wrapper.js +2 -1
- package/dist/components/layout/list-page-layout.d.ts +3 -3
- package/dist/components/layout/list-page-layout.d.ts.map +1 -1
- package/dist/components/layout/page-container.d.ts +8 -1
- package/dist/components/layout/page-container.d.ts.map +1 -1
- package/dist/components/layout/page-container.js +25 -10
- package/dist/components/layout/page-data-sync.d.ts +7 -1
- package/dist/components/layout/page-data-sync.d.ts.map +1 -1
- package/dist/components/layout/page-data-sync.js +13 -4
- package/dist/components/layout/page-heading.d.ts +31 -0
- package/dist/components/layout/page-heading.d.ts.map +1 -1
- package/dist/components/layout/page-heading.js +44 -1
- package/dist/components/layout/page-layout.d.ts +4 -4
- package/dist/components/layout/page-layout.d.ts.map +1 -1
- package/dist/components/layout/page-layout.js +4 -5
- package/dist/components/layout/title-block.d.ts +12 -1
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/layout/title-block.js +50 -12
- package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -0
- package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
- package/dist/components/loading/deprecated-layout-skeletons.d.ts +25 -0
- package/dist/components/loading/deprecated-layout-skeletons.d.ts.map +1 -0
- package/dist/components/loading/deprecated-layout-skeletons.js +78 -0
- package/dist/components/loading/device-card-skeleton.js +4 -4
- package/dist/components/loading/index.d.ts +4 -3
- package/dist/components/loading/index.d.ts.map +1 -1
- package/dist/components/loading/index.js +10 -16
- package/dist/components/loading/loading-region.d.ts +10 -9
- package/dist/components/loading/loading-region.d.ts.map +1 -1
- package/dist/components/loading/loading-region.js +4 -1
- package/dist/components/loading/msp-profile-form-skeleton.d.ts +2 -0
- package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
- package/dist/components/loading/organization-card-skeleton.d.ts +14 -10
- package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
- package/dist/components/loading/organization-card-skeleton.js +38 -40
- package/dist/components/loading/page-layout-skeleton.d.ts +7 -51
- package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
- package/dist/components/loading/page-layout-skeleton.js +2 -411
- package/dist/components/loading/settings-form-skeleton.d.ts +2 -0
- package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -1
- package/dist/components/loading/unified-skeleton.d.ts +57 -9
- package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
- package/dist/components/loading/unified-skeleton.js +57 -8
- package/dist/components/log-severity-dot.d.ts +2 -0
- package/dist/components/log-severity-dot.d.ts.map +1 -1
- package/dist/components/log-severity-dot.js +11 -13
- package/dist/components/logs-list.d.ts.map +1 -1
- package/dist/components/logs-list.js +34 -43
- package/dist/components/media-carousel.d.ts +0 -1
- package/dist/components/media-carousel.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/booking-form.d.ts +52 -8
- package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/booking-form.js +150 -30
- package/dist/components/meeting-scheduler/context-panel.d.ts +18 -2
- package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/context-panel.js +61 -23
- package/dist/components/meeting-scheduler/directory.d.ts +11 -1
- package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/directory.js +47 -27
- package/dist/components/meeting-scheduler/index.cjs +556 -344
- package/dist/components/meeting-scheduler/index.d.ts +5 -4
- package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.js +127 -102
- package/dist/components/meeting-scheduler/modal-header.d.ts +7 -3
- package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/modal-header.js +29 -18
- package/dist/components/meeting-scheduler/slot-picker.d.ts +11 -4
- package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/slot-picker.js +12 -7
- package/dist/components/metric-value.d.ts +5 -0
- package/dist/components/metric-value.d.ts.map +1 -1
- package/dist/components/metric-value.js +15 -3
- package/dist/components/msp-display.d.ts +5 -0
- package/dist/components/msp-display.d.ts.map +1 -1
- package/dist/components/msp-display.js +19 -14
- package/dist/components/navigation/app-layout.d.ts +0 -2
- package/dist/components/navigation/app-layout.d.ts.map +1 -1
- package/dist/components/navigation/app-layout.js +1 -4
- package/dist/components/navigation/index.cjs +48 -42
- package/dist/components/navigation/index.d.ts +8 -3
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +18 -3
- package/dist/components/navigation/mingo-ai-button.d.ts +0 -2
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/navigation/mingo-ai-button.js +2 -4
- package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -1
- package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -1
- package/dist/components/navigation/mobile-nav-sheet.js +0 -2
- package/dist/components/navigation/multi-level-navigation.d.ts +21 -0
- package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
- package/dist/components/navigation/multi-level-navigation.js +98 -24
- package/dist/components/navigation/page-section-bar.d.ts +50 -0
- package/dist/components/navigation/page-section-bar.d.ts.map +1 -0
- package/dist/components/navigation/page-section-bar.js +85 -0
- package/dist/components/navigation/sticky-section-nav.d.ts +12 -0
- package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
- package/dist/components/navigation/sticky-section-nav.js +87 -20
- package/dist/components/navigation/ticket-alerts-button.js +1 -1
- package/dist/components/onboarding-guides/hooks/use-onboarding-guides.d.ts.map +1 -1
- package/dist/components/onboarding-guides/hooks/use-onboarding-guides.js +7 -1
- package/dist/components/onboarding-guides/index.cjs +38 -42
- package/dist/components/onboarding-guides/index.d.ts +1 -2
- package/dist/components/onboarding-guides/index.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.js +5 -3
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +8 -0
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.js +142 -84
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +18 -17
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +28 -21
- package/dist/components/onboarding-guides/onboarding-guides-catalog-view.d.ts.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guides-catalog-view.js +57 -18
- package/dist/components/pagination.d.ts +26 -2
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/pagination.js +61 -38
- package/dist/components/persistent-filter-controls.d.ts.map +1 -1
- package/dist/components/persistent-filter-controls.js +1 -2
- package/dist/components/persistent-pagination.d.ts.map +1 -1
- package/dist/components/persistent-pagination.js +3 -1
- package/dist/components/platform/ToolBadge.d.ts +13 -1
- package/dist/components/platform/ToolBadge.d.ts.map +1 -1
- package/dist/components/platform/ToolBadge.js +38 -9
- package/dist/components/platform/index.d.ts +2 -2
- package/dist/components/platform/index.d.ts.map +1 -1
- package/dist/components/platform/index.js +4 -2
- package/dist/components/platform/tool-badge-mark.d.ts +6 -0
- package/dist/components/platform/tool-badge-mark.d.ts.map +1 -0
- package/dist/components/platform/tool-badge-mark.js +6 -0
- package/dist/components/product-demo/fixtures/devices.d.ts +0 -2
- package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -1
- package/dist/components/product-demo/fixtures/devices.js +0 -2
- package/dist/components/product-demo/index.cjs +1889 -32
- package/dist/components/product-demo/product-screen.d.ts +5 -5
- package/dist/components/product-demo/product-screen.d.ts.map +1 -1
- package/dist/components/product-demo/product-screen.js +19 -15
- package/dist/components/product-demo/screen-loading.d.ts +10 -0
- package/dist/components/product-demo/screen-loading.d.ts.map +1 -0
- package/dist/components/product-demo/screen-loading.js +12 -0
- package/dist/components/product-demo/screens/devices-view.d.ts +22 -0
- package/dist/components/product-demo/screens/devices-view.d.ts.map +1 -0
- package/dist/components/product-demo/screens/devices-view.js +35 -0
- package/dist/components/product-demo/screens/devices.d.ts +1 -7
- package/dist/components/product-demo/screens/devices.d.ts.map +1 -1
- package/dist/components/product-demo/screens/devices.js +8 -15
- package/dist/components/related-content/card-registry.d.ts +3 -2
- package/dist/components/related-content/card-registry.d.ts.map +1 -1
- package/dist/components/related-content/card-registry.js +15 -3
- package/dist/components/related-content/index.cjs +19 -18
- package/dist/components/related-content/index.d.ts +2 -1
- package/dist/components/related-content/index.d.ts.map +1 -1
- package/dist/components/related-content/index.js +3 -1
- package/dist/components/related-content/related-content-section.d.ts +14 -1
- package/dist/components/related-content/related-content-section.d.ts.map +1 -1
- package/dist/components/related-content/related-content-section.js +144 -32
- package/dist/components/results-count.d.ts +5 -0
- package/dist/components/results-count.d.ts.map +1 -1
- package/dist/components/results-count.js +30 -6
- package/dist/components/shared/article-author-byline.d.ts +8 -0
- package/dist/components/shared/article-author-byline.d.ts.map +1 -1
- package/dist/components/shared/article-author-byline.js +54 -52
- package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-lists.js +14 -2
- package/dist/components/shared/delivery/delivery-row.d.ts +5 -0
- package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-row.js +37 -10
- package/dist/components/shared/delivery/delivery-table.d.ts +4 -0
- package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-table.js +14 -26
- package/dist/components/shared/detail-page-skeleton.d.ts +3 -0
- package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
- package/dist/components/shared/detail-page-skeleton.js +9 -1
- package/dist/components/shared/dev-section/dev-card-row.d.ts +2 -0
- package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-card-row.js +31 -21
- package/dist/components/shared/dev-section/dev-section-view.js +1 -1
- package/dist/components/shared/legal-document/index.d.ts +1 -1
- package/dist/components/shared/legal-document/index.d.ts.map +1 -1
- package/dist/components/shared/legal-document/index.js +5 -1
- package/dist/components/shared/legal-document/legal-document-page.d.ts +14 -0
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.js +47 -42
- package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
- package/dist/components/shared/legal-document/use-legal-docs.js +4 -1
- package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -1
- package/dist/components/shared/legal-document/use-legal-documents.js +3 -1
- package/dist/components/shared/media-gallery-strip.d.ts +7 -0
- package/dist/components/shared/media-gallery-strip.d.ts.map +1 -1
- package/dist/components/shared/media-gallery-strip.js +22 -3
- package/dist/components/shared/onboarding/index.d.ts +2 -1
- package/dist/components/shared/onboarding/index.d.ts.map +1 -1
- package/dist/components/shared/onboarding/index.js +1 -3
- package/dist/components/shared/product-release/index.d.ts +2 -1
- package/dist/components/shared/product-release/index.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card-classes.d.ts +26 -0
- package/dist/components/shared/product-release/product-release-card-classes.d.ts.map +1 -0
- package/dist/components/shared/product-release/product-release-card-classes.js +40 -0
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.js +37 -35
- package/dist/components/shared/product-release/product-release-card.d.ts +3 -1
- package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card.js +86 -73
- package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-releases-view.js +26 -13
- package/dist/components/shared/product-release/release-detail-page.d.ts +0 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/shared/product-release/release-detail-page.js +281 -215
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +9 -1
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +12 -11
- package/dist/components/shared/roadmap/roadmap-grid.d.ts +13 -1
- package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-grid.js +45 -29
- package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-view.js +2 -3
- package/dist/components/social-icon-row.d.ts +9 -2
- package/dist/components/social-icon-row.d.ts.map +1 -1
- package/dist/components/social-icon-row.js +12 -6
- package/dist/components/tickets/help-center-list.d.ts.map +1 -1
- package/dist/components/tickets/help-center-list.js +6 -2
- package/dist/components/tickets/hooks/use-ticket-actions.d.ts +2 -2
- package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +42 -46
- package/dist/components/tickets/index.d.ts +2 -1
- package/dist/components/tickets/index.d.ts.map +1 -1
- package/dist/components/tickets/index.js +2 -3
- package/dist/components/tickets/ticket-center.d.ts.map +1 -1
- package/dist/components/tickets/ticket-center.js +117 -58
- package/dist/components/tickets/types.d.ts +0 -8
- package/dist/components/tickets/types.d.ts.map +1 -1
- package/dist/components/tickets/types.js +0 -3
- package/dist/components/toggle-group.d.ts +4 -2
- package/dist/components/toggle-group.d.ts.map +1 -1
- package/dist/components/toggle-group.js +3 -1
- package/dist/components/tool-icon.d.ts.map +1 -1
- package/dist/components/ui/analyzing-state.d.ts +3 -2
- package/dist/components/ui/analyzing-state.d.ts.map +1 -1
- package/dist/components/ui/analyzing-state.js +7 -4
- package/dist/components/ui/announcement-bar-view.d.ts +5 -0
- package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
- package/dist/components/ui/announcement-bar-view.js +3 -1
- package/dist/components/ui/autocomplete.d.ts +13 -0
- package/dist/components/ui/autocomplete.d.ts.map +1 -1
- package/dist/components/ui/autocomplete.js +30 -6
- package/dist/components/ui/avatar-stack.d.ts +7 -0
- package/dist/components/ui/avatar-stack.d.ts.map +1 -1
- package/dist/components/ui/avatar-stack.js +29 -4
- package/dist/components/ui/badge.d.ts +9 -1
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/badge.js +11 -0
- package/dist/components/ui/benefit-list.d.ts +8 -0
- package/dist/components/ui/benefit-list.d.ts.map +1 -1
- package/dist/components/ui/benefit-list.js +20 -11
- package/dist/components/ui/button/button-styles.d.ts +16 -0
- package/dist/components/ui/button/button-styles.d.ts.map +1 -1
- package/dist/components/ui/button/button-styles.js +42 -0
- package/dist/components/ui/button/button.d.ts +3 -1
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/button/button.js +4 -40
- package/dist/components/ui/button/index.d.ts +1 -0
- package/dist/components/ui/button/index.d.ts.map +1 -1
- package/dist/components/ui/button/index.js +4 -0
- package/dist/components/ui/card.d.ts +13 -1
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/card.js +21 -14
- package/dist/components/ui/checkbox.d.ts +2 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +5 -1
- package/dist/components/ui/compliance-badge.d.ts +2 -0
- package/dist/components/ui/compliance-badge.d.ts.map +1 -1
- package/dist/components/ui/compliance-badge.js +5 -2
- package/dist/components/ui/cursor-pagination.d.ts +8 -1
- package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
- package/dist/components/ui/cursor-pagination.js +10 -4
- package/dist/components/ui/dashboard-info-card.d.ts +6 -1
- package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
- package/dist/components/ui/dashboard-info-card.js +19 -10
- package/dist/components/ui/data-attribution.d.ts +10 -5
- package/dist/components/ui/data-attribution.d.ts.map +1 -1
- package/dist/components/ui/data-attribution.js +27 -9
- package/dist/components/ui/data-table/data-table-body.d.ts +1 -1
- package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-body.js +18 -7
- package/dist/components/ui/data-table/data-table-row-count.d.ts +5 -0
- package/dist/components/ui/data-table/data-table-row-count.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-row-count.js +18 -3
- package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-row.js +2 -6
- package/dist/components/ui/data-table/data-table-skeleton.js +5 -5
- package/dist/components/ui/data-table/index.d.ts +2 -2
- package/dist/components/ui/data-table/index.d.ts.map +1 -1
- package/dist/components/ui/data-table/index.js +2 -1
- package/dist/components/ui/date-picker.d.ts +0 -1
- package/dist/components/ui/date-picker.d.ts.map +1 -1
- package/dist/components/ui/entity-image.d.ts +4 -0
- package/dist/components/ui/entity-image.d.ts.map +1 -1
- package/dist/components/ui/entity-image.js +27 -5
- package/dist/components/ui/error-state.d.ts.map +1 -1
- package/dist/components/ui/error-state.js +4 -1
- package/dist/components/ui/feature-card.d.ts +31 -1
- package/dist/components/ui/feature-card.d.ts.map +1 -1
- package/dist/components/ui/feature-card.js +40 -11
- package/dist/components/ui/feature-list.d.ts +15 -1
- package/dist/components/ui/feature-list.d.ts.map +1 -1
- package/dist/components/ui/feature-list.js +43 -8
- package/dist/components/ui/field-wrapper.d.ts +6 -0
- package/dist/components/ui/field-wrapper.d.ts.map +1 -1
- package/dist/components/ui/field-wrapper.js +16 -5
- package/dist/components/ui/file-manager/index.cjs +63 -64
- package/dist/components/ui/filter-checkbox-item.d.ts +9 -0
- package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
- package/dist/components/ui/filter-checkbox-item.js +36 -6
- package/dist/components/ui/filter-modal.d.ts +2 -3
- package/dist/components/ui/filter-modal.d.ts.map +1 -1
- package/dist/components/ui/filter-pill-row.d.ts +10 -5
- package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
- package/dist/components/ui/filter-pill-row.js +56 -19
- package/dist/components/ui/incident-feed.d.ts +1 -1
- package/dist/components/ui/incident-feed.d.ts.map +1 -1
- package/dist/components/ui/incident-feed.js +57 -56
- package/dist/components/ui/index.cjs +219 -39
- package/dist/components/ui/index.d.ts +10 -1
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +29 -1
- package/dist/components/ui/info-card-row.d.ts +12 -0
- package/dist/components/ui/info-card-row.d.ts.map +1 -1
- package/dist/components/ui/info-card-row.js +56 -30
- package/dist/components/ui/info-card.d.ts +24 -1
- package/dist/components/ui/info-card.d.ts.map +1 -1
- package/dist/components/ui/info-card.js +87 -52
- package/dist/components/ui/input-styles.d.ts +7 -0
- package/dist/components/ui/input-styles.d.ts.map +1 -0
- package/dist/components/ui/input-styles.js +7 -0
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/input.js +4 -1
- package/dist/components/ui/layout-hold.d.ts +9 -7
- package/dist/components/ui/layout-hold.d.ts.map +1 -1
- package/dist/components/ui/leader-row.d.ts +11 -4
- package/dist/components/ui/leader-row.d.ts.map +1 -1
- package/dist/components/ui/leader-row.js +29 -5
- package/dist/components/ui/loading-scope.d.ts +26 -0
- package/dist/components/ui/loading-scope.d.ts.map +1 -0
- package/dist/components/ui/loading-scope.js +31 -0
- package/dist/components/ui/markdown/base-components.d.ts +25 -0
- package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
- package/dist/components/ui/markdown/base-components.js +13 -7
- package/dist/components/ui/markdown/engine.d.ts +26 -1
- package/dist/components/ui/markdown/engine.d.ts.map +1 -1
- package/dist/components/ui/markdown/engine.js +63 -4
- package/dist/components/ui/markdown/index.d.ts +5 -3
- package/dist/components/ui/markdown/index.d.ts.map +1 -1
- package/dist/components/ui/markdown/index.js +12 -4
- package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -1
- package/dist/components/ui/markdown/mermaid-diagram.js +8 -2
- package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +10 -0
- package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
- package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +21 -5
- package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -2
- package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/components/ui/markdown-editor.d.ts +10 -0
- package/dist/components/ui/markdown-editor.d.ts.map +1 -1
- package/dist/components/ui/markdown-editor.js +23 -7
- package/dist/components/ui/numbered-step.d.ts +10 -0
- package/dist/components/ui/numbered-step.d.ts.map +1 -1
- package/dist/components/ui/numbered-step.js +19 -2
- package/dist/components/ui/organization-card.d.ts.map +1 -1
- package/dist/components/ui/organization-card.js +30 -5
- package/dist/components/ui/page-actions.d.ts +2 -1
- package/dist/components/ui/page-actions.d.ts.map +1 -1
- package/dist/components/ui/page-actions.js +26 -21
- package/dist/components/ui/page-loader.d.ts.map +1 -1
- package/dist/components/ui/page-loader.js +2 -1
- package/dist/components/ui/people-cell.d.ts +4 -0
- package/dist/components/ui/people-cell.d.ts.map +1 -1
- package/dist/components/ui/people-cell.js +19 -3
- package/dist/components/ui/photo-wall.d.ts +1 -1
- package/dist/components/ui/photo-wall.d.ts.map +1 -1
- package/dist/components/ui/photo-wall.js +13 -3
- package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
- package/dist/components/ui/product-screen-frame.js +3 -2
- package/dist/components/ui/progress-bar.d.ts +9 -0
- package/dist/components/ui/progress-bar.d.ts.map +1 -1
- package/dist/components/ui/progress-bar.js +34 -14
- package/dist/components/ui/progress.d.ts +15 -0
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.js +8 -3
- package/dist/components/ui/release-changelog-section.d.ts +22 -1
- package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
- package/dist/components/ui/release-changelog-section.js +96 -28
- package/dist/components/ui/search-input.d.ts.map +1 -1
- package/dist/components/ui/search-input.js +11 -3
- package/dist/components/ui/searchable-select.d.ts.map +1 -1
- package/dist/components/ui/searchable-select.js +17 -4
- package/dist/components/ui/skeleton-surface.d.ts +12 -4
- package/dist/components/ui/skeleton-surface.d.ts.map +1 -1
- package/dist/components/ui/skeleton-surface.js +6 -2
- package/dist/components/ui/slack-channel-chip.d.ts +5 -1
- package/dist/components/ui/slack-channel-chip.d.ts.map +1 -1
- package/dist/components/ui/slack-channel-chip.js +16 -3
- package/dist/components/ui/snap-carousel.d.ts +4 -1
- package/dist/components/ui/snap-carousel.d.ts.map +1 -1
- package/dist/components/ui/snap-carousel.js +2 -0
- package/dist/components/ui/square-avatar.d.ts +3 -0
- package/dist/components/ui/square-avatar.d.ts.map +1 -1
- package/dist/components/ui/square-avatar.js +38 -23
- package/dist/components/ui/stacked-rows-panel.d.ts +24 -1
- package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
- package/dist/components/ui/stacked-rows-panel.js +50 -13
- package/dist/components/ui/status-badge.d.ts +10 -2
- package/dist/components/ui/status-badge.d.ts.map +1 -1
- package/dist/components/ui/status-badge.js +14 -0
- package/dist/components/ui/status-indicator.d.ts +4 -0
- package/dist/components/ui/status-indicator.d.ts.map +1 -1
- package/dist/components/ui/status-indicator.js +16 -3
- package/dist/components/ui/status-line.d.ts.map +1 -1
- package/dist/components/ui/status-line.js +2 -1
- package/dist/components/ui/strip-card.d.ts +9 -0
- package/dist/components/ui/strip-card.d.ts.map +1 -1
- package/dist/components/ui/strip-card.js +57 -39
- package/dist/components/ui/tab-navigation.d.ts +26 -2
- package/dist/components/ui/tab-navigation.d.ts.map +1 -1
- package/dist/components/ui/tab-navigation.js +182 -115
- package/dist/components/ui/table/table-header.js +2 -2
- package/dist/components/ui/table/table-row.d.ts.map +1 -1
- package/dist/components/ui/table/table-row.js +2 -4
- package/dist/components/ui/table/table-skeleton.d.ts +6 -1
- package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/table/table-skeleton.js +38 -50
- package/dist/components/ui/table/table.d.ts +1 -1
- package/dist/components/ui/table/table.d.ts.map +1 -1
- package/dist/components/ui/table/table.js +30 -25
- package/dist/components/ui/table/types.d.ts +14 -4
- package/dist/components/ui/table/types.d.ts.map +1 -1
- package/dist/components/ui/table/utils.d.ts +4 -0
- package/dist/components/ui/table/utils.d.ts.map +1 -1
- package/dist/components/ui/table/utils.js +4 -0
- package/dist/components/ui/tabs.d.ts +22 -1
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +33 -2
- package/dist/components/ui/tag.d.ts +21 -1
- package/dist/components/ui/tag.d.ts.map +1 -1
- package/dist/components/ui/tag.js +17 -12
- package/dist/components/ui/tags-input.d.ts +9 -0
- package/dist/components/ui/tags-input.d.ts.map +1 -1
- package/dist/components/ui/tags-input.js +41 -10
- package/dist/components/ui/textarea.d.ts +17 -1
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/textarea.js +22 -3
- package/dist/components/ui/ticket-info-section.d.ts +0 -1
- package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
- package/dist/components/ui/timezone-select.d.ts +3 -1
- package/dist/components/ui/timezone-select.d.ts.map +1 -1
- package/dist/components/ui/timezone-select.js +3 -1
- package/dist/components/ui/toggle.d.ts +8 -2
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +10 -6
- package/dist/components/unified-pagination.d.ts +3 -1
- package/dist/components/unified-pagination.d.ts.map +1 -1
- package/dist/components/unified-pagination.js +7 -1
- package/dist/components/user-display.d.ts +11 -0
- package/dist/components/user-display.d.ts.map +1 -1
- package/dist/components/user-display.js +38 -14
- package/dist/components/user-summary-stub.d.ts.map +1 -1
- package/dist/components/user-summary-stub.js +7 -14
- package/dist/components/vendor-display-button.d.ts +4 -0
- package/dist/components/vendor-display-button.d.ts.map +1 -1
- package/dist/components/vendor-display-button.js +11 -13
- package/dist/components/vendor-icon.d.ts +5 -0
- package/dist/components/vendor-icon.d.ts.map +1 -1
- package/dist/components/vendor-icon.js +12 -3
- package/dist/components/vendor-tag.d.ts +5 -0
- package/dist/components/vendor-tag.d.ts.map +1 -1
- package/dist/components/vendor-tag.js +13 -5
- package/dist/{devices-557PMFDC.cjs → devices-2D3XSIIE.cjs} +43 -55
- package/dist/embed-shims/index.cjs +4 -2
- package/dist/embed-shims/next-image.cjs +4 -2
- package/dist/embed-shims/next-image.d.ts.map +1 -1
- package/dist/embed-shims/next-image.js +24 -0
- package/dist/{embeddable-chat-YFUCVDMV.cjs → embeddable-chat-YL6ZSTDJ.cjs} +117 -119
- package/dist/hooks/index.cjs +12 -12
- package/dist/hooks/state/flatten-schema.d.ts +0 -1
- package/dist/hooks/state/flatten-schema.d.ts.map +1 -1
- package/dist/hooks/state/flatten-schema.js +0 -2
- package/dist/hooks/state/index.d.ts +6 -3
- package/dist/hooks/state/index.d.ts.map +1 -1
- package/dist/hooks/state/index.js +4 -3
- package/dist/hooks/state/url-converter.d.ts +1 -1
- package/dist/hooks/state/url-converter.d.ts.map +1 -1
- package/dist/hooks/state/url-converter.js +1 -2
- package/dist/hooks/state/use-api-params.d.ts +1 -3
- package/dist/hooks/state/use-api-params.d.ts.map +1 -1
- package/dist/hooks/state/use-api-params.js +1 -5
- package/dist/hooks/ui/index.d.ts +1 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/use-image-edge-color.d.ts +1 -1
- package/dist/hooks/ui/use-image-edge-color.d.ts.map +1 -1
- package/dist/hooks/ui/use-image-edge-color.js +3 -1
- package/dist/hooks/ui/use-onboarding-state.d.ts +0 -1
- package/dist/hooks/ui/use-onboarding-state.d.ts.map +1 -1
- package/dist/hooks/use-downloads.d.ts +1 -1
- package/dist/hooks/use-downloads.d.ts.map +1 -1
- package/dist/hooks/use-downloads.js +8 -1
- package/dist/hooks/use-meeting-booking.d.ts.map +1 -1
- package/dist/hooks/use-meeting-booking.js +3 -0
- package/dist/hooks/use-self-fetch.d.ts +1 -1
- package/dist/hooks/use-self-fetch.d.ts.map +1 -1
- package/dist/hooks/use-self-fetch.js +7 -4
- package/dist/hooks/use-toast.d.ts +1 -1
- package/dist/index.cjs +329 -103
- package/dist/{knowledge-4JTOUDAR.cjs → knowledge-AJ36PMK2.cjs} +36 -40
- package/dist/{logs-7YWAOPZ2.cjs → logs-DNE44ACE.cjs} +44 -48
- package/dist/nats/index.d.ts +1 -0
- package/dist/nats/index.d.ts.map +1 -1
- package/dist/nats/nats-provider.d.ts +0 -1
- package/dist/nats/nats-provider.d.ts.map +1 -1
- package/dist/nats/nats.d.ts +0 -1
- package/dist/nats/nats.d.ts.map +1 -1
- package/dist/nats/use-nats-subscription.d.ts +2 -1
- package/dist/nats/use-nats-subscription.d.ts.map +1 -1
- package/dist/{policies-W5JEPQTA.cjs → policies-AJHSP6ZY.cjs} +39 -43
- package/dist/{remote-session-F72S6I7J.cjs → remote-session-PPA5SXX7.cjs} +18 -21
- package/dist/schemas/meeting-booking-schema.cjs +4 -0
- package/dist/schemas/meeting-booking-schema.d.ts +8 -0
- package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
- package/dist/schemas/meeting-booking-schema.js +4 -0
- package/dist/{scripts-FY5IPOIM.cjs → scripts-4YO2QL36.cjs} +42 -46
- package/dist/{software-update-5BOGZOHG.cjs → software-update-KMI2EOO3.cjs} +41 -45
- package/dist/styles/component-sizes.d.ts +96 -0
- package/dist/styles/component-sizes.d.ts.map +1 -0
- package/dist/styles/component-sizes.js +77 -0
- package/dist/{tickets-board-DXMF7IKL.cjs → tickets-board-G3WBH4SV.cjs} +18 -20
- package/dist/types/announcement.d.ts +0 -1
- package/dist/types/announcement.d.ts.map +1 -1
- package/dist/types/blog.d.ts +0 -1
- package/dist/types/blog.d.ts.map +1 -1
- package/dist/types/case-study.d.ts +2 -2
- package/dist/types/case-study.d.ts.map +1 -1
- package/dist/types/customer-interview-ai.types.d.ts +1 -2
- package/dist/types/customer-interview-ai.types.d.ts.map +1 -1
- package/dist/types/customer-interview.d.ts +0 -1
- package/dist/types/customer-interview.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/product-release.d.ts +3 -0
- package/dist/types/product-release.d.ts.map +1 -1
- package/dist/types/stack.d.ts +0 -2
- package/dist/types/stack.d.ts.map +1 -1
- package/dist/utils/announcement-storage.d.ts +0 -3
- package/dist/utils/announcement-storage.d.ts.map +1 -1
- package/dist/utils/announcement-storage.js +1 -3
- package/dist/utils/dev-sections/openframe-dev-sections.d.ts +11 -0
- package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -1
- package/dist/utils/dev-sections/openframe-dev-sections.js +5 -0
- package/dist/utils/index.cjs +19 -0
- package/dist/utils/index.d.ts +7 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -6
- package/dist/utils/markdown-heading-id.d.ts +0 -19
- package/dist/utils/markdown-heading-id.d.ts.map +1 -1
- package/dist/utils/markdown-heading-id.js +2 -5
- package/dist/utils/ods-color-utils.d.ts +0 -1
- package/dist/utils/ods-color-utils.d.ts.map +1 -1
- package/dist/utils/ods-color-utils.js +0 -2
- package/dist/utils/own-click.d.ts +4 -0
- package/dist/utils/own-click.d.ts.map +1 -0
- package/dist/utils/own-click.js +14 -0
- package/dist/utils/platform-config.d.ts +0 -1
- package/dist/utils/platform-config.d.ts.map +1 -1
- package/dist/utils/platform-config.js +0 -26
- package/dist/utils/source-icons.d.ts +2 -2
- package/dist/{video-file-player-QZ3YOLHO.cjs → video-file-player-COXRF4M5.cjs} +13 -13
- package/eslint-config/base.js +2 -0
- package/eslint-config/re-exports.js +56 -0
- package/package.json +1 -1
- package/src/ODS_TOKEN_RULES.md +2 -2
- package/src/chat-protocol/decode.ts +0 -5
- package/src/chat-protocol/index.ts +1 -0
- package/src/components/agent-identity.tsx +0 -2
- package/src/components/agent-mark.tsx +13 -4
- package/src/components/authors/author-detail-view.tsx +90 -44
- package/src/components/case-studies/entity-quotes-panel.tsx +50 -3
- package/src/components/case-studies/index.ts +2 -2
- package/src/components/case-studies/quote-cards-strip.tsx +75 -10
- package/src/components/categories-cart.tsx +82 -38
- package/src/components/category-card.tsx +1 -1
- package/src/components/chat/chat-attachment-bar.tsx +1 -1
- package/src/components/chat/chat-container.tsx +2 -1
- package/src/components/chat/chat-ticket-list.tsx +0 -1
- package/src/components/chat/chat-turn.tsx +124 -18
- package/src/components/chat/embeddable-chat.tsx +5 -5
- package/src/components/chat/entity-cards/admin-content-card-grid.tsx +1 -51
- package/src/components/chat/entity-cards/admin-content-card.tsx +80 -15
- package/src/components/chat/entity-cards/blog-card.tsx +71 -41
- package/src/components/chat/entity-cards/campaign-card-admin.tsx +4 -17
- package/src/components/chat/entity-cards/case-study-card.tsx +129 -68
- package/src/components/chat/entity-cards/chat-ticket-item.tsx +34 -29
- package/src/components/chat/entity-cards/customer-interview-card.tsx +61 -45
- package/src/components/chat/entity-cards/data-room-doc-card.tsx +11 -18
- package/src/components/chat/entity-cards/design-doc-card.tsx +48 -34
- package/src/components/chat/entity-cards/dispatch.tsx +9 -13
- package/src/components/chat/entity-cards/employee-entry-card.tsx +5 -5
- package/src/components/chat/entity-cards/entity-author-card.tsx +138 -32
- package/src/components/chat/entity-cards/entity-portrait-card.tsx +61 -16
- package/src/components/chat/entity-cards/generic-entity-card.tsx +11 -19
- package/src/components/chat/entity-cards/github-activity-card.tsx +14 -30
- package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +11 -23
- package/src/components/chat/entity-cards/index.ts +20 -7
- package/src/components/chat/entity-cards/investor-update-card.tsx +42 -35
- package/src/components/chat/entity-cards/onboarding-guide-card.tsx +78 -64
- package/src/components/chat/entity-cards/program-card.tsx +96 -66
- package/src/components/chat/entity-cards/roadmap-card.tsx +85 -65
- package/src/components/chat/entity-cards/roadmap-vote-button.tsx +12 -1
- package/src/components/chat/entity-cards/slack-message-card.tsx +19 -26
- package/src/components/chat/hooks/index.ts +12 -2
- package/src/components/chat/hooks/use-ask-prompts.ts +5 -1
- package/src/components/chat/hooks/use-chat-dialog-manager.ts +1 -1
- package/src/components/chat/hooks/use-chat-history-hydration.ts +1 -1
- package/src/components/chat/hooks/use-chat.ts +0 -3
- package/src/components/chat/hooks/use-nats-chat-adapter.ts +0 -20
- package/src/components/chat/hooks/use-proxied-image-url.ts +27 -20
- package/src/components/chat/hooks/use-slash-commands.ts +1 -7
- package/src/components/chat/hooks/use-sse-chat-adapter.ts +4 -18
- package/src/components/chat/stream/chat-stream-reducer.ts +3 -2
- package/src/components/chat/types/entities/index.ts +24 -4
- package/src/components/chat/types/entities/investor-update.ts +1 -1
- package/src/components/chat/types/entities/program-types.ts +2 -5
- package/src/components/chat/utils/compact-card-classes.ts +15 -2
- package/src/components/chat/utils/compact-card-skeleton.tsx +111 -0
- package/src/components/chat/utils/icon-library.tsx +0 -2
- package/src/components/chat/utils/index.ts +5 -3
- package/src/components/chat/utils/scroll-anchor.ts +0 -2
- package/src/components/chat/utils/source-row-cta.ts +1 -5
- package/src/components/comment-card.tsx +118 -19
- package/src/components/comment-thread.tsx +130 -17
- package/src/components/docs/doc-viewer.tsx +33 -31
- package/src/components/docs/skeletons.tsx +37 -49
- package/src/components/docs/use-document-tree.ts +11 -7
- package/src/components/embeds/embed-iframe.tsx +5 -0
- package/src/components/embeds/index.ts +1 -1
- package/src/components/embeds/markdown-image.tsx +6 -2
- package/src/components/embeds/og-link-preview.tsx +155 -81
- package/src/components/faq/faq-document-page.tsx +8 -0
- package/src/components/faq/faq-section.tsx +249 -70
- package/src/components/faq/index.ts +12 -1
- package/src/components/faq-accordion.tsx +67 -7
- package/src/components/features/ai-enrich/AIStatusIndicator.tsx +2 -1
- package/src/components/features/approval-level.tsx +71 -8
- package/src/components/features/capability-explorer.tsx +59 -61
- package/src/components/features/cards-strip.tsx +54 -12
- package/src/components/features/command-box.tsx +139 -10
- package/src/components/features/conversation-card.tsx +242 -16
- package/src/components/features/devices/device-selector/device-selector.tsx +1 -0
- package/src/components/features/devices/devices-panel-view.tsx +2 -2
- package/src/components/features/entity-tag-badges.tsx +143 -10
- package/src/components/features/entity-video-section.tsx +52 -14
- package/src/components/features/figma-prototype-viewer.tsx +4 -8
- package/src/components/features/index.ts +11 -0
- package/src/components/features/knowledge-base/index.ts +2 -5
- package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +0 -2
- package/src/components/features/model-token-rates.tsx +64 -84
- package/src/components/features/notifications/approval-request-notification-tile.tsx +9 -11
- package/src/components/features/notifications/notification-tile.tsx +58 -23
- package/src/components/features/paths-display.tsx +73 -6
- package/src/components/features/platform-badge.tsx +41 -1
- package/src/components/features/push-button-selector.tsx +167 -64
- package/src/components/features/remote-session/index.ts +2 -2
- package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +24 -3
- package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +19 -5
- package/src/components/features/remote-session/remote-desktop-view.tsx +47 -38
- package/src/components/features/remote-session/remote-session-chat-panel.tsx +1 -1
- package/src/components/features/status-filter-component.tsx +105 -11
- package/src/components/features/use-video-warmup.ts +0 -7
- package/src/components/features/use-walkthrough-video.ts +5 -1
- package/src/components/features/video-bites-strip.tsx +137 -22
- package/src/components/features/video-hover-preview.tsx +2 -1
- package/src/components/features/video.tsx +16 -12
- package/src/components/features/walkthrough-video.tsx +9 -2
- package/src/components/help-center-pages/download-apps-page.tsx +86 -32
- package/src/components/help-center-pages/trust-center-page.tsx +132 -66
- package/src/components/help-center-pages/trust-center-sections.tsx +205 -148
- package/src/components/icon-display.tsx +9 -0
- package/src/components/index.ts +11 -2
- package/src/components/interactive-wrapper.tsx +2 -1
- package/src/components/layout/list-page-layout.tsx +4 -5
- package/src/components/layout/page-container.tsx +59 -29
- package/src/components/layout/page-data-sync.tsx +40 -5
- package/src/components/layout/page-heading.tsx +84 -1
- package/src/components/layout/page-layout.tsx +5 -5
- package/src/components/layout/title-block.tsx +72 -17
- package/src/components/loading/category-vendor-selector-skeleton.tsx +4 -0
- package/src/components/loading/deprecated-layout-skeletons.tsx +133 -0
- package/src/components/loading/device-card-skeleton.tsx +4 -4
- package/src/components/loading/index.ts +11 -13
- package/src/components/loading/loading-region.tsx +16 -9
- package/src/components/loading/msp-profile-form-skeleton.tsx +3 -0
- package/src/components/loading/organization-card-skeleton.tsx +45 -71
- package/src/components/loading/page-layout-skeleton.tsx +1 -641
- package/src/components/loading/settings-form-skeleton.tsx +3 -0
- package/src/components/loading/unified-skeleton.tsx +101 -11
- package/src/components/log-severity-dot.tsx +17 -14
- package/src/components/logs-list.tsx +43 -29
- package/src/components/media-carousel.tsx +0 -4
- package/src/components/meeting-scheduler/booking-form.tsx +245 -35
- package/src/components/meeting-scheduler/context-panel.tsx +96 -30
- package/src/components/meeting-scheduler/directory.tsx +70 -37
- package/src/components/meeting-scheduler/index.tsx +136 -132
- package/src/components/meeting-scheduler/modal-header.tsx +45 -31
- package/src/components/meeting-scheduler/slot-picker.tsx +20 -8
- package/src/components/metric-value.tsx +19 -2
- package/src/components/msp-display.tsx +25 -10
- package/src/components/navigation/app-layout.tsx +0 -3
- package/src/components/navigation/index.ts +15 -3
- package/src/components/navigation/mingo-ai-button.tsx +3 -4
- package/src/components/navigation/mobile-nav-sheet.tsx +0 -2
- package/src/components/navigation/multi-level-navigation.tsx +152 -35
- package/src/components/navigation/page-section-bar.tsx +132 -0
- package/src/components/navigation/sticky-section-nav.tsx +109 -18
- package/src/components/navigation/ticket-alerts-button.tsx +1 -1
- package/src/components/onboarding-guides/hooks/use-onboarding-guides.ts +8 -1
- package/src/components/onboarding-guides/index.ts +5 -2
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +166 -67
- package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +38 -51
- package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +91 -45
- package/src/components/pagination.tsx +103 -48
- package/src/components/persistent-filter-controls.tsx +0 -7
- package/src/components/persistent-pagination.tsx +6 -1
- package/src/components/platform/ToolBadge.tsx +57 -10
- package/src/components/platform/index.ts +2 -2
- package/src/components/platform/tool-badge-mark.ts +6 -0
- package/src/components/product-demo/fixtures/devices.ts +0 -3
- package/src/components/product-demo/product-screen.tsx +42 -23
- package/src/components/product-demo/screen-loading.tsx +20 -0
- package/src/components/product-demo/screens/devices-view.tsx +58 -0
- package/src/components/product-demo/screens/devices.tsx +9 -29
- package/src/components/related-content/card-registry.tsx +20 -6
- package/src/components/related-content/index.ts +3 -1
- package/src/components/related-content/related-content-section.tsx +222 -46
- package/src/components/results-count.tsx +37 -6
- package/src/components/shared/article-author-byline.tsx +65 -41
- package/src/components/shared/delivery/delivery-lists.tsx +15 -2
- package/src/components/shared/delivery/delivery-row.tsx +55 -9
- package/src/components/shared/delivery/delivery-table.tsx +19 -46
- package/src/components/shared/detail-page-skeleton.tsx +15 -1
- package/src/components/shared/dev-section/dev-card-row.tsx +45 -28
- package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
- package/src/components/shared/doc-search/use-doc-search.ts +1 -1
- package/src/components/shared/legal-document/index.ts +2 -0
- package/src/components/shared/legal-document/legal-document-page.tsx +41 -21
- package/src/components/shared/legal-document/use-legal-docs.ts +5 -1
- package/src/components/shared/legal-document/use-legal-documents.ts +4 -1
- package/src/components/shared/media-gallery-strip.tsx +35 -3
- package/src/components/shared/onboarding/index.ts +2 -5
- package/src/components/shared/product-release/index.ts +1 -1
- package/src/components/shared/product-release/product-release-card-classes.ts +28 -0
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +62 -56
- package/src/components/shared/product-release/product-release-card.tsx +62 -44
- package/src/components/shared/product-release/product-releases-view.tsx +32 -24
- package/src/components/shared/product-release/release-detail-page.tsx +229 -134
- package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +20 -6
- package/src/components/shared/roadmap/roadmap-grid.tsx +59 -9
- package/src/components/shared/roadmap/roadmap-view.tsx +3 -3
- package/src/components/social-icon-row.tsx +14 -8
- package/src/components/tickets/help-center-list.tsx +6 -2
- package/src/components/tickets/hooks/use-ticket-actions.ts +0 -4
- package/src/components/tickets/index.ts +1 -2
- package/src/components/tickets/ticket-center.tsx +189 -75
- package/src/components/tickets/types.ts +0 -9
- package/src/components/toggle-group.tsx +4 -1
- package/src/components/tool-icon.tsx +2 -1
- package/src/components/ui/analyzing-state.tsx +11 -6
- package/src/components/ui/announcement-bar-view.tsx +7 -1
- package/src/components/ui/autocomplete.tsx +58 -6
- package/src/components/ui/avatar-stack.tsx +42 -3
- package/src/components/ui/badge.tsx +16 -1
- package/src/components/ui/benefit-list.tsx +41 -6
- package/src/components/ui/button/button-styles.ts +48 -0
- package/src/components/ui/button/button.tsx +5 -39
- package/src/components/ui/button/index.ts +1 -0
- package/src/components/ui/card.tsx +28 -13
- package/src/components/ui/checkbox.tsx +6 -1
- package/src/components/ui/compliance-badge.tsx +6 -2
- package/src/components/ui/cursor-pagination.tsx +28 -3
- package/src/components/ui/dashboard-info-card.tsx +29 -11
- package/src/components/ui/data-attribution.tsx +42 -12
- package/src/components/ui/data-table/data-table-body.tsx +11 -2
- package/src/components/ui/data-table/data-table-row-count.tsx +19 -1
- package/src/components/ui/data-table/data-table-row.tsx +4 -9
- package/src/components/ui/data-table/data-table-skeleton.tsx +7 -7
- package/src/components/ui/data-table/index.ts +2 -1
- package/src/components/ui/date-picker.tsx +0 -6
- package/src/components/ui/entity-image.tsx +27 -4
- package/src/components/ui/error-state.tsx +8 -1
- package/src/components/ui/feature-card.tsx +77 -12
- package/src/components/ui/feature-list.tsx +72 -8
- package/src/components/ui/field-wrapper.tsx +13 -1
- package/src/components/ui/filter-checkbox-item.tsx +57 -6
- package/src/components/ui/filter-modal.tsx +2 -6
- package/src/components/ui/filter-pill-row.tsx +81 -27
- package/src/components/ui/incident-feed.tsx +20 -11
- package/src/components/ui/index.ts +21 -1
- package/src/components/ui/info-card-row.tsx +74 -19
- package/src/components/ui/info-card.tsx +87 -13
- package/src/components/ui/input-styles.ts +6 -0
- package/src/components/ui/input.tsx +4 -1
- package/src/components/ui/layout-hold.tsx +9 -7
- package/src/components/ui/leader-row.tsx +58 -4
- package/src/components/ui/loading-scope.tsx +54 -0
- package/src/components/ui/markdown/base-components.tsx +18 -9
- package/src/components/ui/markdown/engine.tsx +131 -7
- package/src/components/ui/markdown/index.ts +8 -6
- package/src/components/ui/markdown/mermaid-diagram.tsx +7 -4
- package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +26 -1
- package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -3
- package/src/components/ui/markdown-editor.tsx +83 -50
- package/src/components/ui/numbered-step.tsx +32 -2
- package/src/components/ui/organization-card.tsx +32 -7
- package/src/components/ui/page-actions.tsx +51 -31
- package/src/components/ui/page-loader.tsx +2 -1
- package/src/components/ui/people-cell.tsx +25 -2
- package/src/components/ui/photo-wall.tsx +14 -3
- package/src/components/ui/product-screen-frame.tsx +14 -3
- package/src/components/ui/progress-bar.tsx +26 -3
- package/src/components/ui/progress.tsx +14 -3
- package/src/components/ui/release-changelog-section.tsx +153 -20
- package/src/components/ui/search-input.tsx +23 -3
- package/src/components/ui/searchable-select.tsx +26 -6
- package/src/components/ui/skeleton-surface.ts +16 -4
- package/src/components/ui/slack-channel-chip.tsx +23 -3
- package/src/components/ui/snap-carousel.tsx +5 -0
- package/src/components/ui/square-avatar.tsx +41 -23
- package/src/components/ui/stacked-rows-panel.tsx +88 -15
- package/src/components/ui/status-badge.tsx +18 -1
- package/src/components/ui/status-indicator.tsx +21 -2
- package/src/components/ui/status-line.tsx +2 -1
- package/src/components/ui/strip-card.tsx +73 -23
- package/src/components/ui/tab-navigation.tsx +141 -28
- package/src/components/ui/table/table-header.tsx +2 -2
- package/src/components/ui/table/table-row.tsx +2 -4
- package/src/components/ui/table/table-skeleton.tsx +48 -54
- package/src/components/ui/table/table.tsx +36 -19
- package/src/components/ui/table/types.ts +12 -4
- package/src/components/ui/table/utils.ts +5 -0
- package/src/components/ui/tabs.tsx +64 -4
- package/src/components/ui/tag.tsx +33 -13
- package/src/components/ui/tags-input.tsx +48 -10
- package/src/components/ui/textarea.tsx +33 -3
- package/src/components/ui/ticket-info-section.tsx +0 -2
- package/src/components/ui/timezone-select.tsx +4 -0
- package/src/components/ui/toggle.tsx +11 -5
- package/src/components/unified-pagination.tsx +15 -0
- package/src/components/user-display.tsx +53 -12
- package/src/components/user-summary-stub.tsx +7 -11
- package/src/components/vendor-display-button.tsx +15 -12
- package/src/components/vendor-icon.tsx +13 -2
- package/src/components/vendor-tag.tsx +18 -4
- package/src/embed-shims/next-image.tsx +36 -1
- package/src/hooks/state/flatten-schema.ts +0 -4
- package/src/hooks/state/index.ts +5 -3
- package/src/hooks/state/url-converter.ts +2 -2
- package/src/hooks/state/use-api-params.ts +2 -10
- package/src/hooks/ui/index.ts +1 -0
- package/src/hooks/ui/use-image-edge-color.ts +4 -1
- package/src/hooks/ui/use-onboarding-state.ts +0 -2
- package/src/hooks/use-downloads.ts +9 -1
- package/src/hooks/use-meeting-booking.ts +4 -0
- package/src/hooks/use-self-fetch.ts +12 -4
- package/src/nats/index.ts +1 -0
- package/src/nats/nats-provider.tsx +0 -2
- package/src/nats/nats.ts +0 -2
- package/src/nats/use-nats-subscription.ts +2 -1
- package/src/schemas/meeting-booking-schema.ts +11 -0
- package/src/styles/component-sizes.ts +105 -0
- package/src/types/announcement.ts +0 -3
- package/src/types/blog.ts +0 -4
- package/src/types/case-study.ts +2 -2
- package/src/types/customer-interview-ai.types.ts +1 -4
- package/src/types/customer-interview.ts +0 -11
- package/src/types/index.ts +2 -0
- package/src/types/product-release.ts +4 -2
- package/src/types/stack.ts +0 -4
- package/src/utils/announcement-storage.ts +0 -7
- package/src/utils/dev-sections/openframe-dev-sections.ts +11 -0
- package/src/utils/index.ts +6 -9
- package/src/utils/markdown-heading-id.ts +0 -28
- package/src/utils/ods-color-utils.ts +0 -4
- package/src/utils/own-click.ts +25 -0
- package/src/utils/platform-config.tsx +0 -17
- package/src/utils/source-icons.ts +2 -2
- package/dist/chunk-3ATAYP36.cjs +0 -19
- package/dist/chunk-3LU4UFPS.cjs +0 -14
- package/dist/chunk-FQWBIKF4.cjs +0 -404
- package/dist/chunk-H3RYUTND.cjs +0 -142
- package/dist/chunk-L4UI63K6.cjs +0 -103
- package/dist/chunk-NS64LMVE.cjs +0 -470
- package/dist/chunk-OF336YWG.cjs +0 -20
- package/dist/chunk-RB6BSE3O.cjs +0 -21
- package/dist/chunk-RM6AHNM4.cjs +0 -163
- package/dist/components/chat/entity-cards/product-release-card.d.ts +0 -12
- package/dist/components/chat/entity-cards/product-release-card.d.ts.map +0 -1
- package/dist/components/chat/entity-cards/product-release-card.js +0 -8
- package/dist/components/chat/hooks/use-embedded-chat.d.ts +0 -15
- package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +0 -1
- package/dist/components/chat/hooks/use-embedded-chat.js +0 -6
- package/dist/components/chat/types/entities/blog.d.ts +0 -14
- package/dist/components/chat/types/entities/blog.d.ts.map +0 -1
- package/dist/components/chat/types/entities/blog.js +0 -1
- package/dist/components/chat/types/entities/case-study.d.ts +0 -10
- package/dist/components/chat/types/entities/case-study.d.ts.map +0 -1
- package/dist/components/chat/types/entities/case-study.js +0 -1
- package/dist/components/chat/types/entities/content-ref.d.ts +0 -8
- package/dist/components/chat/types/entities/content-ref.d.ts.map +0 -1
- package/dist/components/chat/types/entities/content-ref.js +0 -1
- package/dist/components/chat/types/entities/customer-interview.d.ts +0 -10
- package/dist/components/chat/types/entities/customer-interview.d.ts.map +0 -1
- package/dist/components/chat/types/entities/customer-interview.js +0 -1
- package/dist/components/chat/utils/source-icons.d.ts +0 -8
- package/dist/components/chat/utils/source-icons.d.ts.map +0 -1
- package/dist/components/chat/utils/source-icons.js +0 -16
- package/dist/utils/image-proxy-stub.d.ts +0 -14
- package/dist/utils/image-proxy-stub.d.ts.map +0 -1
- package/dist/utils/image-proxy-stub.js +0 -22
- package/src/components/chat/entity-cards/product-release-card.tsx +0 -19
- package/src/components/chat/hooks/use-embedded-chat.ts +0 -25
- package/src/components/chat/types/entities/blog.ts +0 -27
- package/src/components/chat/types/entities/case-study.ts +0 -10
- package/src/components/chat/types/entities/content-ref.ts +0 -7
- package/src/components/chat/types/entities/customer-interview.ts +0 -15
- package/src/components/chat/utils/source-icons.ts +0 -14
- package/src/utils/image-proxy-stub.ts +0 -40
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { zodResolver } from '@hookform/resolvers/zod';
|
|
4
|
-
import { Fragment, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { Fragment, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
5
5
|
import type { FormEvent, ReactNode, Ref } from 'react';
|
|
6
6
|
import { useForm, Controller } from 'react-hook-form';
|
|
7
7
|
import type { Control, Path, UseFormRegister } from 'react-hook-form';
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
emailDomainDenied,
|
|
18
18
|
type DeniedEmailDomains,
|
|
19
19
|
MULTI_VALUE_SEPARATOR,
|
|
20
|
+
bookingFormAsks,
|
|
20
21
|
normalizeFormFields,
|
|
21
22
|
splitMultiValue,
|
|
22
23
|
type BuiltInBookingField,
|
|
@@ -29,10 +30,11 @@ import {
|
|
|
29
30
|
import { cn } from '../../utils/cn';
|
|
30
31
|
import type { FormRescueDefinition } from '../../utils/form-rescue';
|
|
31
32
|
import { HUBSPOT_DO_NOT_COLLECT_FORM_PROPS } from '../../utils/hubspot-collected-forms';
|
|
32
|
-
import { UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
33
|
+
import { TextLineSkeleton, UnifiedSkeleton } from '../loading/unified-skeleton';
|
|
33
34
|
import {
|
|
34
35
|
Button,
|
|
35
36
|
FieldWrapper,
|
|
37
|
+
fieldLabelId,
|
|
36
38
|
Input,
|
|
37
39
|
Textarea,
|
|
38
40
|
Label,
|
|
@@ -45,8 +47,12 @@ import {
|
|
|
45
47
|
CheckboxBlock,
|
|
46
48
|
RadioGroup,
|
|
47
49
|
RadioGroupItem,
|
|
50
|
+
ToggleGroup,
|
|
51
|
+
ToggleGroupItem,
|
|
48
52
|
} from '../ui';
|
|
49
53
|
import { HoneypotField } from '../ui/honeypot-field';
|
|
54
|
+
import { useLoadingScope } from '../ui/loading-scope';
|
|
55
|
+
import { TOGGLE_SIZE_CLASS } from '../ui/toggle';
|
|
50
56
|
|
|
51
57
|
/**
|
|
52
58
|
* One field in a host-supplied row. `name` is a built-in (`email`, `firstName`,
|
|
@@ -77,6 +83,14 @@ export type BookingFieldRow = BookingFieldSlot[];
|
|
|
77
83
|
export interface BookingFieldCopy {
|
|
78
84
|
label?: string;
|
|
79
85
|
placeholder?: string;
|
|
86
|
+
/**
|
|
87
|
+
* How a CHOICE question (`select`, `radio`) is drawn. Omitted or `dropdown`:
|
|
88
|
+
* the question's own control (a select, or radio buttons). `chips`: one-tap
|
|
89
|
+
* chips, when the link offers at most `CHIP_MAX_OPTIONS` answers (past it, the
|
|
90
|
+
* question's own control). The answers, their name and their validation are
|
|
91
|
+
* always the link's own.
|
|
92
|
+
*/
|
|
93
|
+
display?: 'chips' | 'dropdown';
|
|
80
94
|
}
|
|
81
95
|
|
|
82
96
|
/**
|
|
@@ -123,11 +137,6 @@ const SPAN_CLASS = {
|
|
|
123
137
|
4: 'content-md:col-span-4',
|
|
124
138
|
} as const;
|
|
125
139
|
|
|
126
|
-
/** One field's skeleton: label + control footprint — the CSS twin of `FieldWrapper`'s
|
|
127
|
-
* label row over `Input`'s `h-11 content-md:h-12` (the other skeleton heights below are
|
|
128
|
-
* the same kind of twin: the textarea, the consent row, the `Button`). */
|
|
129
|
-
const FIELD_SKELETON_CLASS = 'h-[4.75rem] w-full';
|
|
130
|
-
|
|
131
140
|
/** The submit copy every standalone `BookingForm` gets; the slot-first preset reads the same constant. */
|
|
132
141
|
export const DEFAULT_SUBMIT_LABEL = 'Confirm Booking';
|
|
133
142
|
|
|
@@ -175,8 +184,10 @@ interface ControlArgs {
|
|
|
175
184
|
const placeholderFor = (field: ControlArgs['field']): string | undefined =>
|
|
176
185
|
field.placeholder ?? fieldTypeSpec(field.type).placeholder?.(field);
|
|
177
186
|
|
|
178
|
-
/** An option's display text: HubSpot's label when it differs from the submitted value.
|
|
179
|
-
|
|
187
|
+
/** An option's display text: HubSpot's label when it differs from the submitted value. Exported: a host that asks
|
|
188
|
+
* one of the link's questions outside the form (a landing hero) words its answers the same way. */
|
|
189
|
+
export const formFieldOptionLabel = (field: Pick<MeetingFormField, 'optionLabels'>, value: string): string =>
|
|
190
|
+
field.optionLabels?.[value] ?? value;
|
|
180
191
|
|
|
181
192
|
/** A free-text answer is sent without the whitespace a paste drags in. */
|
|
182
193
|
const trimmed = (v: unknown): string => String(v ?? '').trim();
|
|
@@ -282,7 +293,7 @@ const FIELD_CONTROLS: Record<SupportedFormFieldType, (args: ControlArgs) => Reac
|
|
|
282
293
|
<SelectContent>
|
|
283
294
|
{(field.options ?? []).map(opt => (
|
|
284
295
|
<SelectItem key={opt} value={opt}>
|
|
285
|
-
{
|
|
296
|
+
{formFieldOptionLabel(field, opt)}
|
|
286
297
|
</SelectItem>
|
|
287
298
|
))}
|
|
288
299
|
</SelectContent>
|
|
@@ -304,7 +315,7 @@ const FIELD_CONTROLS: Record<SupportedFormFieldType, (args: ControlArgs) => Reac
|
|
|
304
315
|
{(field.options ?? []).map(opt => (
|
|
305
316
|
<div key={opt} className="flex items-center gap-[var(--spacing-system-xs)]">
|
|
306
317
|
<RadioGroupItem id={`${id}-${opt}`} value={opt} />
|
|
307
|
-
<Label htmlFor={`${id}-${opt}`}>{
|
|
318
|
+
<Label htmlFor={`${id}-${opt}`}>{formFieldOptionLabel(field, opt)}</Label>
|
|
308
319
|
</div>
|
|
309
320
|
))}
|
|
310
321
|
</RadioGroup>
|
|
@@ -333,7 +344,7 @@ const FIELD_CONTROLS: Record<SupportedFormFieldType, (args: ControlArgs) => Reac
|
|
|
333
344
|
onCheckedChange={v => toggle(opt, v === true)}
|
|
334
345
|
aria-invalid={Boolean(error)}
|
|
335
346
|
/>
|
|
336
|
-
<Label htmlFor={`${id}-${opt}`}>{
|
|
347
|
+
<Label htmlFor={`${id}-${opt}`}>{formFieldOptionLabel(field, opt)}</Label>
|
|
337
348
|
</div>
|
|
338
349
|
))}
|
|
339
350
|
</div>
|
|
@@ -363,11 +374,74 @@ const FIELD_CONTROLS: Record<SupportedFormFieldType, (args: ControlArgs) => Reac
|
|
|
363
374
|
),
|
|
364
375
|
};
|
|
365
376
|
|
|
377
|
+
/** The field types that may be drawn as chips (`BookingFieldCopy.display`): one answer from a list. */
|
|
378
|
+
const CHIP_FIELD_TYPES: ReadonlySet<string> = new Set(['select', 'radio']);
|
|
379
|
+
|
|
380
|
+
/** The most answers a choice question may offer and still be drawn as chips: more read better as a list. */
|
|
381
|
+
export const CHIP_MAX_OPTIONS = 6;
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Whether a choice question is drawn as chips: only when the host asks for it
|
|
385
|
+
* (`display: 'chips'`) and the link offers at most `CHIP_MAX_OPTIONS` answers.
|
|
386
|
+
* Anything else keeps the question's own control from `FIELD_CONTROLS`.
|
|
387
|
+
*/
|
|
388
|
+
function drawnAsChips(field: { type: string; options?: string[] }, display: BookingFieldCopy['display']): boolean {
|
|
389
|
+
if (display !== 'chips' || !CHIP_FIELD_TYPES.has(field.type)) return false;
|
|
390
|
+
const count = field.options?.length ?? 0;
|
|
391
|
+
return count > 0 && count <= CHIP_MAX_OPTIONS;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* A choice question as one-tap chips: the lib's single `ToggleGroup`, one item
|
|
396
|
+
* per option. The group is named by the question's label (`FieldWrapper` gives
|
|
397
|
+
* it `fieldLabelId`), a refused question paints the lib's error border on its
|
|
398
|
+
* chips, and hover is a quiet background so it never reads as the chosen one.
|
|
399
|
+
*/
|
|
400
|
+
/** The chips' row: read by `chipsControl` and by `FieldSkeleton`, so a chips question loads at its own height. */
|
|
401
|
+
const CHIP_ROW_CLASS = 'flex flex-wrap justify-start gap-[var(--spacing-system-xsf)]';
|
|
402
|
+
|
|
403
|
+
const chipsControl = ({ field, id, registerName, error, control }: ControlArgs): ReactNode => (
|
|
404
|
+
<Controller
|
|
405
|
+
control={control}
|
|
406
|
+
name={registerName as never}
|
|
407
|
+
render={({ field: rhf }) => (
|
|
408
|
+
<ToggleGroup
|
|
409
|
+
id={id}
|
|
410
|
+
type="single"
|
|
411
|
+
variant="choice"
|
|
412
|
+
value={rhf.value ?? ''}
|
|
413
|
+
// A tap on the chosen chip reports '': the answer stays (clearing is not a choice the form offers).
|
|
414
|
+
onValueChange={(value: string) => {
|
|
415
|
+
if (value) rhf.onChange(value);
|
|
416
|
+
}}
|
|
417
|
+
// The form focuses a question that failed validation through its ref: the group passes that to its first chip.
|
|
418
|
+
ref={(group: HTMLDivElement | null) =>
|
|
419
|
+
rhf.ref(group && { focus: () => group.querySelector('button')?.focus() })
|
|
420
|
+
}
|
|
421
|
+
onBlur={rhf.onBlur}
|
|
422
|
+
aria-labelledby={fieldLabelId(id)}
|
|
423
|
+
aria-required={field.required || undefined}
|
|
424
|
+
aria-invalid={Boolean(error)}
|
|
425
|
+
className={CHIP_ROW_CLASS}
|
|
426
|
+
>
|
|
427
|
+
{(field.options ?? []).map(opt => (
|
|
428
|
+
<ToggleGroupItem key={opt} value={opt} className={cn(error && 'data-[state=off]:border-ods-error')}>
|
|
429
|
+
{formFieldOptionLabel(field, opt)}
|
|
430
|
+
</ToggleGroupItem>
|
|
431
|
+
))}
|
|
432
|
+
</ToggleGroup>
|
|
433
|
+
)}
|
|
434
|
+
/>
|
|
435
|
+
);
|
|
436
|
+
|
|
366
437
|
/** `firstName` → `ms-first-name`; the ids the built-ins have always had. */
|
|
367
438
|
const builtInId = (name: string) => `ms-${name.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`)}`;
|
|
368
439
|
|
|
369
440
|
export interface BookingFormProps {
|
|
370
|
-
availability
|
|
441
|
+
/** The link's availability; null while it is read (the form is then its skeleton). */
|
|
442
|
+
availability: MeetingAvailability | null;
|
|
443
|
+
/** The link is still being read: the form draws its own skeleton (`BookingFormSkeleton`), as in a loading scope. */
|
|
444
|
+
loading?: boolean;
|
|
371
445
|
meetingId: string;
|
|
372
446
|
/** Absent in `deferSlot` mode — the slot is chosen AFTER these answers. */
|
|
373
447
|
startTimeMs?: number;
|
|
@@ -383,6 +457,15 @@ export interface BookingFormProps {
|
|
|
383
457
|
deferSlot?: boolean;
|
|
384
458
|
/** Repopulates the form on a remount — the back edge, or an error return. */
|
|
385
459
|
initialValues?: Record<string, unknown>;
|
|
460
|
+
/**
|
|
461
|
+
* Answers the host took OUTSIDE the form, by question name (a landing hero's
|
|
462
|
+
* one-tap question). Each is written into its question when the form mounts
|
|
463
|
+
* and whenever it changes, while the question is empty or still holds the
|
|
464
|
+
* host's last answer: nothing the visitor typed is overwritten, and an answer
|
|
465
|
+
* the host withdraws clears what it wrote. An answer to a question the form
|
|
466
|
+
* does not ask is ignored.
|
|
467
|
+
*/
|
|
468
|
+
answers?: Readonly<Record<string, string>>;
|
|
386
469
|
/** Defaults to "Confirm Booking"; details-first says "Continue". */
|
|
387
470
|
submitLabel?: string;
|
|
388
471
|
/** Small print beside the submit (details-first sets expectations). */
|
|
@@ -397,6 +480,15 @@ export interface BookingFormProps {
|
|
|
397
480
|
* appended full width. Both are deliberate — see `slotNode`/`unplacedFields`.
|
|
398
481
|
*/
|
|
399
482
|
fieldRows?: BookingFieldRow[];
|
|
483
|
+
/**
|
|
484
|
+
* The OPTIONAL questions of the link this form asks, by name. A link is often
|
|
485
|
+
* shared by several pages, and a question added to it for one page must not
|
|
486
|
+
* appear on the others: with this set, an optional question it does not name
|
|
487
|
+
* is left out (in `fieldRows` and in the default layout alike). A REQUIRED
|
|
488
|
+
* question is always asked, named or not: a required field with no control
|
|
489
|
+
* is a submit that cannot succeed. Omitted: every declared question is asked.
|
|
490
|
+
*/
|
|
491
|
+
optionalFields?: readonly string[];
|
|
400
492
|
/** The form element's id, so a host can submit it from a button outside it
|
|
401
493
|
* (`<button form={id}>`): the modal layout keeps its actions in a footer
|
|
402
494
|
* under the card. */
|
|
@@ -439,8 +531,28 @@ export interface BookingFormProps {
|
|
|
439
531
|
* external embedders). Honeypot + elapsed-ms are merged into the POST at
|
|
440
532
|
* submit; the parent calls `resetSignals()` after a SLOT_TAKEN refetch so a
|
|
441
533
|
* legitimate retry isn't flagged too-fast.
|
|
534
|
+
*
|
|
535
|
+
* While the link is read (`loading`, a loading scope, or no availability yet) the form is its own skeleton.
|
|
442
536
|
*/
|
|
443
|
-
export function BookingForm({
|
|
537
|
+
export function BookingForm(props: BookingFormProps) {
|
|
538
|
+
const inScope = useLoadingScope();
|
|
539
|
+
const { availability } = props;
|
|
540
|
+
if (inScope || props.loading || !availability) {
|
|
541
|
+
return (
|
|
542
|
+
<BookingFormSkeleton
|
|
543
|
+
fieldRows={props.fieldRows}
|
|
544
|
+
optionalFields={props.optionalFields}
|
|
545
|
+
fieldCopy={props.fieldCopy}
|
|
546
|
+
consent={props.consent}
|
|
547
|
+
footerNote={props.footerNote}
|
|
548
|
+
submitLabel={props.submitLabel}
|
|
549
|
+
/>
|
|
550
|
+
);
|
|
551
|
+
}
|
|
552
|
+
return <BookingFormBody {...props} availability={availability} />;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
function BookingFormBody({
|
|
444
556
|
availability,
|
|
445
557
|
meetingId,
|
|
446
558
|
startTimeMs,
|
|
@@ -448,9 +560,11 @@ export function BookingForm({
|
|
|
448
560
|
timezone,
|
|
449
561
|
deferSlot = false,
|
|
450
562
|
initialValues,
|
|
563
|
+
answers,
|
|
451
564
|
submitLabel,
|
|
452
565
|
footerNote,
|
|
453
566
|
fieldRows,
|
|
567
|
+
optionalFields,
|
|
454
568
|
formId,
|
|
455
569
|
hideSubmit = false,
|
|
456
570
|
onValidityChange,
|
|
@@ -462,12 +576,16 @@ export function BookingForm({
|
|
|
462
576
|
honeypotInputProps,
|
|
463
577
|
getSignals,
|
|
464
578
|
rescue = null,
|
|
465
|
-
}: BookingFormProps) {
|
|
579
|
+
}: BookingFormProps & { availability: MeetingAvailability }) {
|
|
466
580
|
const { formFields, legalConsent } = availability;
|
|
467
581
|
// Every declared question resolved to a control (`resolveFormFieldControl`) —
|
|
468
582
|
// an unfamiliar HubSpot type is drawn as its nearest control, never dropped
|
|
469
583
|
// silently and never a reason to hide the form.
|
|
470
|
-
|
|
584
|
+
// `optionalFields` narrows the optional ones to the questions this form asks.
|
|
585
|
+
const supportedFields = useMemo(
|
|
586
|
+
() => normalizeFormFields(formFields).filter(field => bookingFormAsks(field, optionalFields)),
|
|
587
|
+
[formFields, optionalFields],
|
|
588
|
+
);
|
|
471
589
|
// The DEFERRED schema in both flows: it is the wider of the two, and a strict
|
|
472
590
|
// resolver is not assignable to `Resolver<BookingFormValues>`. The strict
|
|
473
591
|
// schema is the server's contract — see `makeBookingSchema`'s docblock.
|
|
@@ -553,6 +671,26 @@ export function BookingForm({
|
|
|
553
671
|
);
|
|
554
672
|
}, [consentDefaults, priorConsents, getValues, setValue]);
|
|
555
673
|
|
|
674
|
+
// The host's outside answers, written without a remount, on mount too (an answer given before the form
|
|
675
|
+
// mounted, or while a later step had it unmounted, still arrives). A question is the host's to write while it
|
|
676
|
+
// is empty or still holds what this effect last wrote there; once it holds anything else (typed, or restored
|
|
677
|
+
// from the visitor's own stash) it is the visitor's. An answer the host withdraws clears what it wrote.
|
|
678
|
+
const written = useRef<Record<string, string>>({});
|
|
679
|
+
useEffect(() => {
|
|
680
|
+
const names = new Set([...Object.keys(answers ?? {}), ...Object.keys(written.current)]);
|
|
681
|
+
for (const name of names) {
|
|
682
|
+
// Only a question this form asks: an answer to one the link does not declare (or the form leaves out) goes nowhere.
|
|
683
|
+
if (!supportedFields.some(field => field.name === name)) continue;
|
|
684
|
+
const next = answers?.[name] ?? '';
|
|
685
|
+
const current = getValues('formFields')?.[name] ?? '';
|
|
686
|
+
if (current !== '' && current !== written.current[name]) continue;
|
|
687
|
+
if (next) written.current[name] = next;
|
|
688
|
+
else delete written.current[name];
|
|
689
|
+
if (current === next) continue;
|
|
690
|
+
setValue(`formFields.${name}` as never, next as never, { shouldValidate: next !== '' });
|
|
691
|
+
}
|
|
692
|
+
}, [answers, supportedFields, getValues, setValue]);
|
|
693
|
+
|
|
556
694
|
// Form rescue: the built-ins by name, the declared questions under `formFields.<name>`.
|
|
557
695
|
const rescueFields = useMemo(
|
|
558
696
|
() => [...BUILT_IN_BOOKING_FIELDS.map(field => field.name), ...supportedFields.map(field => field.name)],
|
|
@@ -648,7 +786,7 @@ export function BookingForm({
|
|
|
648
786
|
required={shown.required}
|
|
649
787
|
error={where.error}
|
|
650
788
|
>
|
|
651
|
-
{FIELD_CONTROLS[shown.type]({
|
|
789
|
+
{(drawnAsChips(shown, copy?.display) ? chipsControl : FIELD_CONTROLS[shown.type])({
|
|
652
790
|
field: shown,
|
|
653
791
|
id: where.id,
|
|
654
792
|
registerName: where.registerName,
|
|
@@ -857,42 +995,78 @@ export function BookingForm({
|
|
|
857
995
|
*/
|
|
858
996
|
export function BookingFormSkeleton({
|
|
859
997
|
fieldRows,
|
|
998
|
+
optionalFields,
|
|
999
|
+
fieldCopy,
|
|
860
1000
|
consent,
|
|
861
1001
|
footerNote,
|
|
1002
|
+
submitLabel = DEFAULT_SUBMIT_LABEL,
|
|
862
1003
|
}: {
|
|
863
1004
|
fieldRows?: BookingFieldRow[];
|
|
864
|
-
/**
|
|
865
|
-
*
|
|
866
|
-
|
|
867
|
-
|
|
1005
|
+
/** The optional questions the form asks (`BookingForm`'s `optionalFields`): a row slot naming another optional
|
|
1006
|
+
* question is left out, as the loaded form leaves it out. */
|
|
1007
|
+
optionalFields?: readonly string[];
|
|
1008
|
+
/** The host's per-field copy (`BookingForm`'s `fieldCopy`): a built-in field's label is drawn with it. */
|
|
1009
|
+
fieldCopy?: Record<string, BookingFieldCopy>;
|
|
1010
|
+
/** The host's consent row (`BookingForm`'s `consent`), drawn for real: it is the host's own words. `true` (no
|
|
1011
|
+
* copy known) draws the row with its label as a bar. A HubSpot `legalConsent` block is unknown until
|
|
1012
|
+
* availability lands, the one footprint this skeleton cannot budget for. */
|
|
1013
|
+
consent?: BookingFormConsent | boolean;
|
|
1014
|
+
/** The footer's note (the host's words), drawn for real. */
|
|
868
1015
|
footerNote?: string;
|
|
1016
|
+
/** The submit button's label (`BookingForm`'s `submitLabel`): the button is drawn for real at its own size. */
|
|
1017
|
+
submitLabel?: string;
|
|
869
1018
|
}) {
|
|
1019
|
+
const consentId = useId();
|
|
1020
|
+
// The real submit button (static copy), inert with the rest of the form.
|
|
1021
|
+
const submitButton = (
|
|
1022
|
+
<Button type="button" tabIndex={-1} className={footerNote ? SUBMIT_WIDE_CLASS : undefined}>
|
|
1023
|
+
{submitLabel}
|
|
1024
|
+
</Button>
|
|
1025
|
+
);
|
|
870
1026
|
return (
|
|
871
|
-
|
|
1027
|
+
// Inert: the fields are the form's own controls, drawn so each is its loaded size; none takes focus.
|
|
1028
|
+
<div className={cn('flex-1', FORM_STACK)} aria-hidden inert>
|
|
872
1029
|
{/* The host's rows (or the built-in layout) through the SAME grid, column
|
|
873
1030
|
rule and normalisation as the loaded form — see `normalizeFieldRows`. */}
|
|
874
|
-
{skeletonRows(fieldRows ?? DEFAULT_FIELD_ROWS).map(row => (
|
|
1031
|
+
{skeletonRows(fieldRows ?? DEFAULT_FIELD_ROWS, optionalFields).map(row => (
|
|
875
1032
|
<div key={row.map(s => s.name).join('|')} className={ROW_GRID}>
|
|
876
1033
|
{row.map((slot, slotIndex) => (
|
|
877
|
-
<
|
|
1034
|
+
<FieldSkeleton
|
|
878
1035
|
key={slot.name}
|
|
879
|
-
|
|
1036
|
+
name={slot.name}
|
|
1037
|
+
fieldCopy={fieldCopy}
|
|
1038
|
+
className={slotColumnClass(row, slot, slotIndex)}
|
|
880
1039
|
/>
|
|
881
1040
|
))}
|
|
882
1041
|
</div>
|
|
883
1042
|
))}
|
|
884
1043
|
{/* Without rows there is no telling how many questions the link declares: one long answer stands for them. */}
|
|
885
|
-
{!fieldRows &&
|
|
886
|
-
|
|
1044
|
+
{!fieldRows && (
|
|
1045
|
+
// An empty label keeps the field's own frame (`FieldWrapper` draws no label for it); the bar stands for it.
|
|
1046
|
+
<FieldWrapper label="">
|
|
1047
|
+
<TextLineSkeleton type="h6" className="mb-1 w-40" />
|
|
1048
|
+
<Textarea tabIndex={-1} />
|
|
1049
|
+
</FieldWrapper>
|
|
1050
|
+
)}
|
|
1051
|
+
{consent && (
|
|
1052
|
+
<CheckboxBlock
|
|
1053
|
+
id={consentId}
|
|
1054
|
+
checked={false}
|
|
1055
|
+
onCheckedChange={() => {}}
|
|
1056
|
+
required
|
|
1057
|
+
label={
|
|
1058
|
+
consent === true ? <TextLineSkeleton type="inherit" as="span" className="w-64 max-w-full" /> : consent.label
|
|
1059
|
+
}
|
|
1060
|
+
description={consent === true ? undefined : consent.description}
|
|
1061
|
+
/>
|
|
1062
|
+
)}
|
|
887
1063
|
{footerNote ? (
|
|
888
1064
|
<div className={FOOTER_ROW_CLASS}>
|
|
889
|
-
<
|
|
890
|
-
|
|
1065
|
+
<p className="text-ods-text-secondary text-h6">{footerNote}</p>
|
|
1066
|
+
{submitButton}
|
|
891
1067
|
</div>
|
|
892
1068
|
) : (
|
|
893
|
-
<div className={FOOTER_BARE_CLASS}>
|
|
894
|
-
<UnifiedSkeleton className="h-12 w-40" />
|
|
895
|
-
</div>
|
|
1069
|
+
<div className={FOOTER_BARE_CLASS}>{submitButton}</div>
|
|
896
1070
|
)}
|
|
897
1071
|
</div>
|
|
898
1072
|
);
|
|
@@ -930,8 +1104,44 @@ function normalizeFieldRows(fieldRows: BookingFieldRow[], resolves: (name: strin
|
|
|
930
1104
|
return { rows, unplacedBuiltIns, named };
|
|
931
1105
|
}
|
|
932
1106
|
|
|
933
|
-
/** The skeleton's rows: the normalised host rows, then the built-ins none of them named.
|
|
934
|
-
|
|
935
|
-
|
|
1107
|
+
/** The skeleton's rows: the normalised host rows, then the built-ins none of them named. With `optionalFields`, a
|
|
1108
|
+
* slot that is neither a built-in nor one of the named questions is left out, as `bookingFormAsks` leaves it out. */
|
|
1109
|
+
function skeletonRows(fieldRows: BookingFieldRow[], optionalFields?: readonly string[]): BookingFieldRow[] {
|
|
1110
|
+
const asks = (name: string) =>
|
|
1111
|
+
!optionalFields || BUILT_IN_BOOKING_FIELDS.some(f => f.name === name) || optionalFields.includes(name);
|
|
1112
|
+
const { rows, unplacedBuiltIns } = normalizeFieldRows(fieldRows, asks);
|
|
936
1113
|
return [...rows, ...unplacedBuiltIns.map(f => [{ name: f.name }])];
|
|
937
1114
|
}
|
|
1115
|
+
|
|
1116
|
+
/**
|
|
1117
|
+
* One field while the link is read: the loaded field's own `FieldWrapper` over the loaded control. A built-in field's
|
|
1118
|
+
* label is its own words (or the host's copy); a declared question's label is the host's copy when it gives one
|
|
1119
|
+
* (static, drawn for real), else a bar of the label's line, since the link supplies it. A question the host draws
|
|
1120
|
+
* as chips (`display: 'chips'`) is one row of chips at the chips' own height; any other is an `Input`.
|
|
1121
|
+
*/
|
|
1122
|
+
function FieldSkeleton({
|
|
1123
|
+
name,
|
|
1124
|
+
fieldCopy,
|
|
1125
|
+
className,
|
|
1126
|
+
}: {
|
|
1127
|
+
name: string;
|
|
1128
|
+
fieldCopy?: Record<string, BookingFieldCopy>;
|
|
1129
|
+
className?: string;
|
|
1130
|
+
}) {
|
|
1131
|
+
const builtIn = BUILT_IN_BOOKING_FIELDS.find(f => f.name === name);
|
|
1132
|
+
const copy = fieldCopy?.[name];
|
|
1133
|
+
const label = builtIn ? (copy?.label ?? builtIn.label) : copy?.label;
|
|
1134
|
+
return (
|
|
1135
|
+
// An empty label keeps the field's own frame; a read label is the bar under it.
|
|
1136
|
+
<FieldWrapper label={label ?? ''} required={builtIn?.required} className={className}>
|
|
1137
|
+
{label === undefined && <TextLineSkeleton type="h6" className="mb-1 w-32" />}
|
|
1138
|
+
{!builtIn && copy?.display === 'chips' ? (
|
|
1139
|
+
<div className={CHIP_ROW_CLASS}>
|
|
1140
|
+
<UnifiedSkeleton variant="default" className={cn(TOGGLE_SIZE_CLASS.default, 'w-24 rounded-md')} />
|
|
1141
|
+
</div>
|
|
1142
|
+
) : (
|
|
1143
|
+
<Input tabIndex={-1} />
|
|
1144
|
+
)}
|
|
1145
|
+
</FieldWrapper>
|
|
1146
|
+
);
|
|
1147
|
+
}
|
|
@@ -4,8 +4,11 @@ import type { MeetingHost } from '../../schemas/meeting-booking-schema';
|
|
|
4
4
|
import { cn } from '../../utils/cn';
|
|
5
5
|
import { formatDurationCompact } from '../../utils/format';
|
|
6
6
|
import { BackButton } from '../layout/back-button';
|
|
7
|
-
import {
|
|
7
|
+
import { InteractiveSkeleton, TextLineSkeleton } from '../loading/unified-skeleton';
|
|
8
8
|
import { SquareAvatar, AvatarStack, Button } from '../ui';
|
|
9
|
+
import { AutocompleteSkeleton } from '../ui/autocomplete';
|
|
10
|
+
import { useLoadingScope } from '../ui/loading-scope';
|
|
11
|
+
import { SquareAvatarSkeleton } from '../ui/square-avatar';
|
|
9
12
|
import { TimezoneSelect } from '../ui/timezone-select';
|
|
10
13
|
|
|
11
14
|
/**
|
|
@@ -56,6 +59,8 @@ export interface SchedulerContextPanelProps {
|
|
|
56
59
|
* right up to the confirmation — where there is nothing left to re-read. */
|
|
57
60
|
showTimezone?: boolean;
|
|
58
61
|
className?: string;
|
|
62
|
+
/** The meeting is still being read: the panel draws its own skeleton, as in a loading scope. */
|
|
63
|
+
loading?: boolean;
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
/** Panel stack — one rhythm shared by the loaded panel and its skeleton
|
|
@@ -103,6 +108,17 @@ const BACK_BUTTON_CLASS = 'py-0';
|
|
|
103
108
|
* section headers. */
|
|
104
109
|
const FIELD_LABEL_CLASS = 'text-h4 text-ods-text-primary';
|
|
105
110
|
|
|
111
|
+
/** One host's row and its text column, read by the panel and by its skeleton. */
|
|
112
|
+
const HOST_ROW_CLASS = 'flex items-center gap-[var(--spacing-system-xs)]';
|
|
113
|
+
const HOST_TEXT_CLASS = 'flex min-w-0 flex-col';
|
|
114
|
+
/** The static duration line beside the host. */
|
|
115
|
+
const DURATION_LINE_CLASS = 'shrink-0 text-ods-text-secondary text-h6';
|
|
116
|
+
/** The "Duration" field and its chips row. */
|
|
117
|
+
const DURATION_FIELD_CLASS = 'flex flex-col gap-[var(--spacing-system-xxs)]';
|
|
118
|
+
const DURATION_CHIPS_CLASS = 'flex flex-wrap gap-[var(--spacing-system-xs)]';
|
|
119
|
+
/** After a slot is chosen the timezone field is drawn only on the 280px sidebar (from `lg`). */
|
|
120
|
+
const TIMEZONE_WIDE_ONLY_CLASS = 'content-max-lg:hidden';
|
|
121
|
+
|
|
106
122
|
/**
|
|
107
123
|
* Same-footprint skeleton — swaps with the loaded panel with zero shift.
|
|
108
124
|
* STATIC labels ("Duration", "Timezone") render REAL; only data-driven
|
|
@@ -112,10 +128,28 @@ export function ContextPanelSkeleton({
|
|
|
112
128
|
className,
|
|
113
129
|
onBack,
|
|
114
130
|
backLabel = 'Back',
|
|
131
|
+
title = true,
|
|
132
|
+
description = true,
|
|
133
|
+
durations = 0,
|
|
134
|
+
timezone = 'shown',
|
|
115
135
|
}: {
|
|
116
136
|
className?: string;
|
|
117
137
|
onBack?: () => void;
|
|
118
138
|
backLabel?: string;
|
|
139
|
+
/** The loaded panel has the meeting's title line (a bar of it). Default true: a scheduling link has a title. */
|
|
140
|
+
title?: boolean;
|
|
141
|
+
/** The loaded panel has the meeting's description line (a bar of it). Default true. */
|
|
142
|
+
description?: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* How many duration chips the loaded panel offers: more than 1 draws the "Duration" row, otherwise the static
|
|
145
|
+
* duration line beside the host (every link states its length, as chips or as that line). Default 0.
|
|
146
|
+
*/
|
|
147
|
+
durations?: number;
|
|
148
|
+
/**
|
|
149
|
+
* The timezone field, as the loaded panel draws it: `shown`, `wide` (only from `lg`, after a slot is chosen) or
|
|
150
|
+
* `hidden` (the confirmation). Default `shown`.
|
|
151
|
+
*/
|
|
152
|
+
timezone?: 'shown' | 'wide' | 'hidden';
|
|
119
153
|
}) {
|
|
120
154
|
return (
|
|
121
155
|
<div className={cn(PANEL_STACK, className)}>
|
|
@@ -127,25 +161,45 @@ export function ContextPanelSkeleton({
|
|
|
127
161
|
<div className={STRIP_BODY}>
|
|
128
162
|
<div className={STRIP_MAIN}>
|
|
129
163
|
<div className={IDENTITY_ROW}>
|
|
130
|
-
<div className=
|
|
131
|
-
<
|
|
132
|
-
<div className=
|
|
133
|
-
<
|
|
134
|
-
<
|
|
164
|
+
<div className={HOST_ROW_CLASS}>
|
|
165
|
+
<SquareAvatarSkeleton variant="round" size="sm" />
|
|
166
|
+
<div className={HOST_TEXT_CLASS}>
|
|
167
|
+
<TextLineSkeleton type="h4" className="w-32" />
|
|
168
|
+
<TextLineSkeleton type="h6" className="w-24" />
|
|
135
169
|
</div>
|
|
136
170
|
</div>
|
|
137
|
-
<
|
|
171
|
+
{durations <= 1 && <TextLineSkeleton type="h6" className="w-20 shrink-0" />}
|
|
138
172
|
</div>
|
|
173
|
+
{title && <TextLineSkeleton type="h3" className="w-3/5" />}
|
|
174
|
+
{description && <TextLineSkeleton type="h6" className="w-4/5" />}
|
|
175
|
+
{durations > 1 && (
|
|
176
|
+
<div className={DURATION_FIELD_CLASS}>
|
|
177
|
+
<p className={FIELD_LABEL_CLASS}>Duration</p>
|
|
178
|
+
<div className={DURATION_CHIPS_CLASS}>
|
|
179
|
+
{Array.from({ length: durations }, (_, i) => (
|
|
180
|
+
<InteractiveSkeleton.Button key={i} size="small-legacy" className="w-16" />
|
|
181
|
+
))}
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
)}
|
|
139
185
|
</div>
|
|
140
|
-
|
|
141
|
-
<
|
|
142
|
-
|
|
143
|
-
|
|
186
|
+
{timezone !== 'hidden' && (
|
|
187
|
+
<div className={cn(STRIP_ASIDE, timezone === 'wide' && TIMEZONE_WIDE_ONLY_CLASS)}>
|
|
188
|
+
<p className={FIELD_LABEL_CLASS}>Timezone</p>
|
|
189
|
+
<AutocompleteSkeleton />
|
|
190
|
+
</div>
|
|
191
|
+
)}
|
|
144
192
|
</div>
|
|
145
193
|
</div>
|
|
146
194
|
);
|
|
147
195
|
}
|
|
148
196
|
|
|
197
|
+
/**
|
|
198
|
+
* How many lengths the panel's skeleton offers while the link is read and its lengths are not known yet: a scheduling
|
|
199
|
+
* link typically offers more than one (a short and a long call), so the skeleton draws the "Duration" row of chips.
|
|
200
|
+
*/
|
|
201
|
+
const CONTEXT_PANEL_TYPICAL_DURATIONS = 2;
|
|
202
|
+
|
|
149
203
|
export function SchedulerContextPanel({
|
|
150
204
|
hosts,
|
|
151
205
|
title,
|
|
@@ -161,7 +215,23 @@ export function SchedulerContextPanel({
|
|
|
161
215
|
disabled = false,
|
|
162
216
|
showTimezone = true,
|
|
163
217
|
className,
|
|
218
|
+
loading = false,
|
|
164
219
|
}: SchedulerContextPanelProps) {
|
|
220
|
+
// While the meeting is read the panel is its skeleton (the hosts, title and durations are read data).
|
|
221
|
+
if (useLoadingScope() || loading) {
|
|
222
|
+
return (
|
|
223
|
+
<ContextPanelSkeleton
|
|
224
|
+
onBack={onBack}
|
|
225
|
+
backLabel={backLabel}
|
|
226
|
+
title={title !== undefined}
|
|
227
|
+
description={description !== undefined && description !== null}
|
|
228
|
+
durations={locked ? 0 : durationsMs.length || CONTEXT_PANEL_TYPICAL_DURATIONS}
|
|
229
|
+
timezone={showTimezone ? (locked ? 'wide' : 'shown') : 'hidden'}
|
|
230
|
+
className={className}
|
|
231
|
+
/>
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
|
|
165
235
|
return (
|
|
166
236
|
<div className={cn(PANEL_STACK, className)}>
|
|
167
237
|
{/* The card's ONE back edge, at every step — the caller decides where it
|
|
@@ -178,7 +248,7 @@ export function SchedulerContextPanel({
|
|
|
178
248
|
{hosts.length > 0 && hosts.length <= 3 && (
|
|
179
249
|
<div className="flex flex-col gap-[var(--spacing-system-s)]">
|
|
180
250
|
{hosts.map(host => (
|
|
181
|
-
<div key={host.name} className=
|
|
251
|
+
<div key={host.name} className={HOST_ROW_CLASS}>
|
|
182
252
|
<SquareAvatar
|
|
183
253
|
variant="round"
|
|
184
254
|
size="sm"
|
|
@@ -186,7 +256,7 @@ export function SchedulerContextPanel({
|
|
|
186
256
|
alt={host.name}
|
|
187
257
|
fallback={host.name}
|
|
188
258
|
/>
|
|
189
|
-
<div className=
|
|
259
|
+
<div className={HOST_TEXT_CLASS}>
|
|
190
260
|
<p className="truncate text-ods-text-primary text-h4">{host.name}</p>
|
|
191
261
|
{host.title && <p className="truncate text-ods-text-secondary text-h6">{host.title}</p>}
|
|
192
262
|
</div>
|
|
@@ -205,9 +275,7 @@ export function SchedulerContextPanel({
|
|
|
205
275
|
? // Post-selection, or a link that offers one length: a static line,
|
|
206
276
|
// which is what sits beside the host on the header-strip layouts.
|
|
207
277
|
selectedDurationMs != null && (
|
|
208
|
-
<p className=
|
|
209
|
-
{formatDurationCompact(selectedDurationMs / 1000)} call
|
|
210
|
-
</p>
|
|
278
|
+
<p className={DURATION_LINE_CLASS}>{formatDurationCompact(selectedDurationMs / 1000)} call</p>
|
|
211
279
|
)
|
|
212
280
|
: null}
|
|
213
281
|
</div>
|
|
@@ -218,9 +286,9 @@ export function SchedulerContextPanel({
|
|
|
218
286
|
{/* Several lengths on offer: chips, which need a full row of their
|
|
219
287
|
own at every width — so they stay OUT of the identity row. */}
|
|
220
288
|
{!locked && durationsMs.length > 1 && (
|
|
221
|
-
<div className=
|
|
289
|
+
<div className={DURATION_FIELD_CLASS}>
|
|
222
290
|
<p className={FIELD_LABEL_CLASS}>Duration</p>
|
|
223
|
-
<div className=
|
|
291
|
+
<div className={DURATION_CHIPS_CLASS}>
|
|
224
292
|
{durationsMs.map(ms => (
|
|
225
293
|
<Button
|
|
226
294
|
key={ms}
|
|
@@ -244,19 +312,17 @@ export function SchedulerContextPanel({
|
|
|
244
312
|
// summary line states the zone one row below — so the fact survives,
|
|
245
313
|
// only the control steps aside. The 280px sidebar has the room, so
|
|
246
314
|
// there it stays.
|
|
247
|
-
<div className={cn(STRIP_ASIDE, locked &&
|
|
315
|
+
<div className={cn(STRIP_ASIDE, locked && TIMEZONE_WIDE_ONLY_CLASS)}>
|
|
248
316
|
<p className={FIELD_LABEL_CLASS}>Timezone</p>
|
|
249
|
-
{
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
<UnifiedSkeleton className="h-12 w-full" />
|
|
259
|
-
)}
|
|
317
|
+
{/* Until the visitor's zone is known the picker draws its own skeleton (`loading`). */}
|
|
318
|
+
<TimezoneSelect
|
|
319
|
+
value={timezone ?? null}
|
|
320
|
+
loading={!timezone}
|
|
321
|
+
disabled={disabled}
|
|
322
|
+
onChange={tz => {
|
|
323
|
+
if (tz) onTimezoneChange?.(tz);
|
|
324
|
+
}}
|
|
325
|
+
/>
|
|
260
326
|
</div>
|
|
261
327
|
)}
|
|
262
328
|
</div>
|