@blukavantui/community 0.0.0-stage → 1.1.0
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/LICENSE.txt +103 -0
- package/README.md +177 -2
- package/THIRD_PARTY_NOTICES.txt +58 -0
- package/assets/fonts/dm-sans-LICENSE.txt +93 -0
- package/assets/fonts/dm-sans-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/dm-sans-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/dm-sans-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/dm-sans-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-LICENSE.txt +93 -0
- package/assets/fonts/ibm-plex-mono-latin-100-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-100-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-200-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-200-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-300-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-500-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-600-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-700-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-700-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-100-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-100-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-200-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-200-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-300-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-300-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-400-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-500-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-600-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-600-normal.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-700-italic.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-latin-ext-700-normal.woff2 +0 -0
- package/assets/fonts/inter-LICENSE.txt +93 -0
- package/assets/fonts/inter-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/inter-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-LICENSE.txt +93 -0
- package/assets/fonts/jetbrains-mono-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/lora-LICENSE.txt +93 -0
- package/assets/fonts/lora-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/lora-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/lora-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/lora-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/manifest.json +618 -0
- package/assets/fonts/manrope-LICENSE.txt +93 -0
- package/assets/fonts/manrope-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/manrope-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/merriweather-LICENSE.txt +93 -0
- package/assets/fonts/merriweather-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/merriweather-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/merriweather-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/merriweather-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/montserrat-LICENSE.txt +93 -0
- package/assets/fonts/montserrat-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/montserrat-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/montserrat-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/montserrat-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/playfair-display-LICENSE.txt +93 -0
- package/assets/fonts/playfair-display-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/playfair-display-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/playfair-display-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/playfair-display-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/roboto-LICENSE.txt +93 -0
- package/assets/fonts/roboto-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/roboto-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/roboto-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/roboto-latin-wght-normal.woff2 +0 -0
- package/assets/fonts/source-sans-3-LICENSE.txt +93 -0
- package/assets/fonts/source-sans-3-latin-ext-wght-italic.woff2 +0 -0
- package/assets/fonts/source-sans-3-latin-ext-wght-normal.woff2 +0 -0
- package/assets/fonts/source-sans-3-latin-wght-italic.woff2 +0 -0
- package/assets/fonts/source-sans-3-latin-wght-normal.woff2 +0 -0
- package/dist/advanced-types.d.ts +114 -0
- package/dist/app-layout.css +115 -0
- package/dist/app-layout.d.ts +2 -0
- package/dist/app-layout.js +1 -0
- package/dist/badge.css +131 -0
- package/dist/badge.d.ts +2 -0
- package/dist/badge.js +1 -0
- package/dist/bluui-community-grid.js +72 -0
- package/dist/bluui-community.js +1 -0
- package/dist/breadcrumbs.css +77 -0
- package/dist/breadcrumbs.d.ts +2 -0
- package/dist/breadcrumbs.js +1 -0
- package/dist/build-audit.json +516 -0
- package/dist/button.css +625 -0
- package/dist/button.d.ts +2 -0
- package/dist/button.js +1 -0
- package/dist/card.css +119 -0
- package/dist/card.d.ts +2 -0
- package/dist/card.js +1 -0
- package/dist/cascader.css +152 -0
- package/dist/cascader.d.ts +2 -0
- package/dist/cascader.js +1 -0
- package/dist/chat-widget.css +121 -0
- package/dist/chat-widget.d.ts +2 -0
- package/dist/chat-widget.js +1 -0
- package/dist/chat.css +66 -0
- package/dist/chat.d.ts +2 -0
- package/dist/chat.js +1 -0
- package/dist/checkbox.css +1 -0
- package/dist/checkbox.d.ts +2 -0
- package/dist/checkbox.js +1 -0
- package/dist/chip-group.css +44 -0
- package/dist/chip-group.d.ts +2 -0
- package/dist/chip-group.js +1 -0
- package/dist/chip.css +191 -0
- package/dist/chip.d.ts +2 -0
- package/dist/chip.js +1 -0
- package/dist/chunk-2HFI6CC6.js +0 -0
- package/dist/chunk-2MQNFEGJ.js +1 -0
- package/dist/chunk-3LWXPCWY.js +1 -0
- package/dist/chunk-3PNBQVYS.js +1 -0
- package/dist/chunk-3ZS5YITP.js +1 -0
- package/dist/chunk-4RM3B4L7.js +1 -0
- package/dist/chunk-4USJBOSC.js +1 -0
- package/dist/chunk-5ENZVZGF.js +0 -0
- package/dist/chunk-5TEIXA4R.js +1 -0
- package/dist/chunk-64LOE3FU.js +1 -0
- package/dist/chunk-6EHKOVZK.js +1 -0
- package/dist/chunk-6EJIIQNF.js +1 -0
- package/dist/chunk-6XOMFIPU.js +1 -0
- package/dist/chunk-75BQYII5.js +1 -0
- package/dist/chunk-7HXX66DB.js +3 -0
- package/dist/chunk-7KMRDQZG.js +0 -0
- package/dist/chunk-AICXIQKD.js +1 -0
- package/dist/chunk-AL2ETLJV.js +1 -0
- package/dist/chunk-BLDXIO7P.js +1 -0
- package/dist/chunk-BN3PDE5G.js +0 -0
- package/dist/chunk-C3CLLZH2.js +1 -0
- package/dist/chunk-CZXYS6CY.js +1 -0
- package/dist/chunk-EOKNLCNS.js +1 -0
- package/dist/chunk-EPZGLHPD.js +0 -0
- package/dist/chunk-FNX33PDD.js +0 -0
- package/dist/chunk-GEG3TNB4.js +1 -0
- package/dist/chunk-GK3INPAZ.js +1 -0
- package/dist/chunk-GXHANADL.js +1 -0
- package/dist/chunk-H5IEGCAK.js +72 -0
- package/dist/chunk-H7ETPJVW.js +1 -0
- package/dist/chunk-HO6CYWED.js +0 -0
- package/dist/chunk-IHKCC6WJ.js +1 -0
- package/dist/chunk-IIKSMXQE.js +1 -0
- package/dist/chunk-IJ62ILKE.js +0 -0
- package/dist/chunk-IO22GWON.js +0 -0
- package/dist/chunk-IZJN3EF7.js +1 -0
- package/dist/chunk-J7BV4KHG.js +1 -0
- package/dist/chunk-JVE6CXCJ.js +1 -0
- package/dist/chunk-K2P2BHV5.js +1 -0
- package/dist/chunk-KBOMPMSI.js +1 -0
- package/dist/chunk-KR3UUTB2.js +1 -0
- package/dist/chunk-LGJVLEAH.js +1 -0
- package/dist/chunk-LJ4O6YTN.js +1 -0
- package/dist/chunk-MBC4UVTS.js +1 -0
- package/dist/chunk-MCVO25PZ.js +1 -0
- package/dist/chunk-MEEQNPGM.js +1 -0
- package/dist/chunk-MSMNEIWA.js +0 -0
- package/dist/chunk-MYVLBALF.js +1 -0
- package/dist/chunk-MZBB5ROJ.js +1 -0
- package/dist/chunk-NB5PGEDY.js +1 -0
- package/dist/chunk-NTFHNL7T.js +1 -0
- package/dist/chunk-O3MRWAI5.js +1 -0
- package/dist/chunk-OPMD7QNV.js +1 -0
- package/dist/chunk-RGTLYBOY.js +3 -0
- package/dist/chunk-RWBLICYX.js +0 -0
- package/dist/chunk-RYD6RHRX.js +0 -0
- package/dist/chunk-RZ5YSY7Y.js +0 -0
- package/dist/chunk-SDMH2EVD.js +1 -0
- package/dist/chunk-SEJUHKS5.js +1 -0
- package/dist/chunk-SIU7DSOA.js +1 -0
- package/dist/chunk-T45UAWNI.js +3 -0
- package/dist/chunk-TIXCZTJ7.js +0 -0
- package/dist/chunk-U4ZP73V4.js +1 -0
- package/dist/chunk-U73BNLZ3.js +1 -0
- package/dist/chunk-UEOCR2C3.js +2 -0
- package/dist/chunk-UN2SLVFG.js +1 -0
- package/dist/chunk-UUZ4HU7L.js +0 -0
- package/dist/chunk-VBRSAI3K.js +1 -0
- package/dist/chunk-VJVFHL6P.js +0 -0
- package/dist/chunk-W27NAI62.js +1 -0
- package/dist/chunk-W4SW4RWX.js +1 -0
- package/dist/chunk-WHA6UO5X.js +1 -0
- package/dist/chunk-XIOI5PKM.js +1 -0
- package/dist/chunk-XWXEH3SW.js +1 -0
- package/dist/chunk-Y4TCT2K6.js +1 -0
- package/dist/chunk-Y4WEMSE4.js +0 -0
- package/dist/chunk-YCLR3IE3.js +0 -0
- package/dist/collection-layout.css +30 -0
- package/dist/collection-layout.d.ts +2 -0
- package/dist/collection-layout.js +1 -0
- package/dist/colors.d.ts +2 -0
- package/dist/columns2.css +1 -0
- package/dist/columns2.d.ts +2 -0
- package/dist/columns2.js +1 -0
- package/dist/columns3.css +1 -0
- package/dist/columns3.d.ts +2 -0
- package/dist/columns3.js +1 -0
- package/dist/columns4.css +1 -0
- package/dist/columns4.d.ts +2 -0
- package/dist/columns4.js +1 -0
- package/dist/command-palette.css +35 -0
- package/dist/command-palette.d.ts +2 -0
- package/dist/command-palette.js +1 -0
- package/dist/component-factories/app-layout.d.ts +2 -0
- package/dist/component-factories/breadcrumbs.d.ts +2 -0
- package/dist/component-factories/cascader.d.ts +2 -0
- package/dist/component-factories/chat-widget.d.ts +2 -0
- package/dist/component-factories/chat.d.ts +2 -0
- package/dist/component-factories/collection-layout.d.ts +2 -0
- package/dist/component-factories/command-palette.d.ts +2 -0
- package/dist/component-factories/content-carousel.d.ts +2 -0
- package/dist/component-factories/dashboard-canvas.d.ts +3 -0
- package/dist/component-factories/dashboard-panel.d.ts +3 -0
- package/dist/component-factories/date-picker.d.ts +2 -0
- package/dist/component-factories/date-range-picker.d.ts +2 -0
- package/dist/component-factories/date-time-picker.d.ts +2 -0
- package/dist/component-factories/descriptions.d.ts +2 -0
- package/dist/component-factories/drawer.d.ts +2 -0
- package/dist/component-factories/float-button.d.ts +2 -0
- package/dist/component-factories/font-provider.d.ts +2 -0
- package/dist/component-factories/hero-section.d.ts +2 -0
- package/dist/component-factories/image-compare.d.ts +2 -0
- package/dist/component-factories/logo-cloud.d.ts +2 -0
- package/dist/component-factories/media-card.d.ts +2 -0
- package/dist/component-factories/media-image.d.ts +2 -0
- package/dist/component-factories/modal.d.ts +2 -0
- package/dist/component-factories/notification-center.d.ts +3 -0
- package/dist/component-factories/notification.d.ts +5 -0
- package/dist/component-factories/page-header.d.ts +2 -0
- package/dist/component-factories/page-layout.d.ts +2 -0
- package/dist/component-factories/pagination.d.ts +2 -0
- package/dist/component-factories/profile-card.d.ts +2 -0
- package/dist/component-factories/qr-code.d.ts +2 -0
- package/dist/component-factories/quote-card.d.ts +2 -0
- package/dist/component-factories/shape-mask.d.ts +2 -0
- package/dist/component-factories/sidebar.d.ts +2 -0
- package/dist/component-factories/sparkline.d.ts +2 -0
- package/dist/component-factories/split-section.d.ts +2 -0
- package/dist/component-factories/splitter.d.ts +2 -0
- package/dist/component-factories/statistic.d.ts +2 -0
- package/dist/component-factories/text-highlight.d.ts +2 -0
- package/dist/component-factories/time-picker.d.ts +2 -0
- package/dist/component-factories/timeline.d.ts +2 -0
- package/dist/component-factories/tour.d.ts +2 -0
- package/dist/component-factories/transfer-list.d.ts +2 -0
- package/dist/component-factories/tree-select.d.ts +2 -0
- package/dist/component-factories/tree-view.d.ts +2 -0
- package/dist/component-factories/upload-manager.d.ts +2 -0
- package/dist/component-factories/video-lightbox.d.ts +2 -0
- package/dist/component-factories/video-player.d.ts +2 -0
- package/dist/component-runtime.d.ts +2 -0
- package/dist/content-carousel.css +34 -0
- package/dist/content-carousel.d.ts +2 -0
- package/dist/content-carousel.js +1 -0
- package/dist/content.css +2085 -0
- package/dist/content.d.ts +13 -0
- package/dist/content.js +1 -0
- package/dist/core.css +1070 -0
- package/dist/core.d.ts +6 -0
- package/dist/core.js +1 -0
- package/dist/dashboard-canvas.css +49 -0
- package/dist/dashboard-canvas.d.ts +2 -0
- package/dist/dashboard-canvas.js +1 -0
- package/dist/dashboard-panel.css +2 -0
- package/dist/dashboard-panel.d.ts +2 -0
- package/dist/dashboard-panel.js +1 -0
- package/dist/data.css +876 -0
- package/dist/data.d.ts +10 -0
- package/dist/data.js +1 -0
- package/dist/date-picker.css +78 -0
- package/dist/date-picker.d.ts +2 -0
- package/dist/date-picker.js +1 -0
- package/dist/date-range-picker.css +78 -0
- package/dist/date-range-picker.d.ts +2 -0
- package/dist/date-range-picker.js +1 -0
- package/dist/date-time-picker.css +78 -0
- package/dist/date-time-picker.d.ts +2 -0
- package/dist/date-time-picker.js +1 -0
- package/dist/descriptions.css +113 -0
- package/dist/descriptions.d.ts +2 -0
- package/dist/descriptions.js +1 -0
- package/dist/dom.d.ts +7 -0
- package/dist/draft-components.json +77 -0
- package/dist/drawer.css +215 -0
- package/dist/drawer.d.ts +2 -0
- package/dist/drawer.js +1 -0
- package/dist/empty-state.css +110 -0
- package/dist/empty-state.d.ts +2 -0
- package/dist/empty-state.js +1 -0
- package/dist/essentials.css +1295 -0
- package/dist/essentials.d.ts +11 -0
- package/dist/essentials.js +1 -0
- package/dist/feedback.css +1136 -0
- package/dist/feedback.d.ts +10 -0
- package/dist/feedback.js +1 -0
- package/dist/float-button.css +28 -0
- package/dist/float-button.d.ts +2 -0
- package/dist/float-button.js +1 -0
- package/dist/font-provider.css +5 -0
- package/dist/font-provider.d.ts +2 -0
- package/dist/font-provider.js +1 -0
- package/dist/fonts/dm-sans-LICENSE.txt +93 -0
- package/dist/fonts/dm-sans-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/dm-sans-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/dm-sans-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/dm-sans-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-LICENSE.txt +93 -0
- package/dist/fonts/ibm-plex-mono-latin-100-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-100-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-200-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-200-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-300-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-500-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-600-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-700-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-700-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-100-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-100-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-200-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-200-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-300-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-300-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-500-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-500-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-600-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-600-normal.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-700-italic.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-700-normal.woff2 +0 -0
- package/dist/fonts/inter-LICENSE.txt +93 -0
- package/dist/fonts/inter-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-LICENSE.txt +93 -0
- package/dist/fonts/jetbrains-mono-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/lora-LICENSE.txt +93 -0
- package/dist/fonts/lora-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/lora-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/lora-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/lora-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/manifest.json +618 -0
- package/dist/fonts/manrope-LICENSE.txt +93 -0
- package/dist/fonts/manrope-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/manrope-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/merriweather-LICENSE.txt +93 -0
- package/dist/fonts/merriweather-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/merriweather-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/merriweather-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/merriweather-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/montserrat-LICENSE.txt +93 -0
- package/dist/fonts/montserrat-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/montserrat-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/montserrat-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/montserrat-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-LICENSE.txt +93 -0
- package/dist/fonts/playfair-display-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/playfair-display-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/roboto-LICENSE.txt +93 -0
- package/dist/fonts/roboto-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/roboto-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/roboto-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/source-sans-3-LICENSE.txt +93 -0
- package/dist/fonts/source-sans-3-latin-ext-wght-italic.woff2 +0 -0
- package/dist/fonts/source-sans-3-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/source-sans-3-latin-wght-italic.woff2 +0 -0
- package/dist/fonts/source-sans-3-latin-wght-normal.woff2 +0 -0
- package/dist/form-field.css +1 -0
- package/dist/form-field.d.ts +2 -0
- package/dist/form-field.js +1 -0
- package/dist/form-layout/choice.d.ts +15 -0
- package/dist/form-layout/layout.d.ts +12 -0
- package/dist/form-layout/select.d.ts +3 -0
- package/dist/form-layout/shared.d.ts +21 -0
- package/dist/form-layout/table.d.ts +20 -0
- package/dist/form-layout/text.d.ts +3 -0
- package/dist/form-layout/types.d.ts +151 -0
- package/dist/form-layout.css +62 -0
- package/dist/form-layout.d.ts +12 -0
- package/dist/form-layout.js +1 -0
- package/dist/grid-basic.css +12 -0
- package/dist/grid-basic.d.ts +10 -0
- package/dist/grid-basic.js +1 -0
- package/dist/grid-spec.d.ts +37 -0
- package/dist/grid.css +12 -0
- package/dist/grid.d.ts +1 -0
- package/dist/grid.js +1 -0
- package/dist/hero-section.css +41 -0
- package/dist/hero-section.d.ts +2 -0
- package/dist/hero-section.js +1 -0
- package/dist/image-compare.css +35 -0
- package/dist/image-compare.d.ts +2 -0
- package/dist/image-compare.js +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.js +1 -0
- package/dist/inputs.css +1587 -0
- package/dist/inputs.d.ts +16 -0
- package/dist/inputs.js +1 -0
- package/dist/layout.css +907 -0
- package/dist/layout.d.ts +11 -0
- package/dist/layout.js +1 -0
- package/dist/logo-cloud.css +33 -0
- package/dist/logo-cloud.d.ts +2 -0
- package/dist/logo-cloud.js +1 -0
- package/dist/marketing-template-layout.css +30 -0
- package/dist/media-card.css +41 -0
- package/dist/media-card.d.ts +2 -0
- package/dist/media-card.js +1 -0
- package/dist/media-image.css +531 -0
- package/dist/media-image.d.ts +2 -0
- package/dist/media-image.js +1 -0
- package/dist/modal.css +210 -0
- package/dist/modal.d.ts +2 -0
- package/dist/modal.js +1 -0
- package/dist/native/app-layout.js +1 -0
- package/dist/native/cascader.js +1 -0
- package/dist/native/chat-widget.js +3 -0
- package/dist/native/chat.js +3 -0
- package/dist/native/collection-layout.js +1 -0
- package/dist/native/command-palette.js +1 -0
- package/dist/native/content-carousel.js +1 -0
- package/dist/native/dashboard-canvas.js +1 -0
- package/dist/native/date-picker.js +1 -0
- package/dist/native/date-range-picker.js +1 -0
- package/dist/native/date-time-picker.js +1 -0
- package/dist/native/descriptions.js +1 -0
- package/dist/native/drawer.js +1 -0
- package/dist/native/float-button.js +1 -0
- package/dist/native/font-provider.js +1 -0
- package/dist/native/form-layout.js +1 -0
- package/dist/native/hero-section.js +1 -0
- package/dist/native/image-compare.js +1 -0
- package/dist/native/logo-cloud.js +1 -0
- package/dist/native/media-card.js +1 -0
- package/dist/native/media-image.js +1 -0
- package/dist/native/modal.js +1 -0
- package/dist/native/notification-center.js +1 -0
- package/dist/native/notification.js +2 -0
- package/dist/native/page-layout.js +1 -0
- package/dist/native/pagination.js +1 -0
- package/dist/native/profile-card.js +1 -0
- package/dist/native/qr-code.js +3 -0
- package/dist/native/quote-card.js +1 -0
- package/dist/native/shape-mask.js +1 -0
- package/dist/native/sparkline.js +1 -0
- package/dist/native/split-section.js +1 -0
- package/dist/native/splitter.js +1 -0
- package/dist/native/statistic.js +1 -0
- package/dist/native/text-highlight.js +1 -0
- package/dist/native/time-picker.js +1 -0
- package/dist/native/timeline.js +1 -0
- package/dist/native/tour.js +1 -0
- package/dist/native/transfer-list.js +1 -0
- package/dist/native/tree-select.js +1 -0
- package/dist/native/tree-view.js +1 -0
- package/dist/native/upload-manager.js +1 -0
- package/dist/native/video-lightbox.js +1 -0
- package/dist/native/video-player.js +1 -0
- package/dist/native-base.d.ts +1 -0
- package/dist/native-components/app-layout.d.ts +1 -0
- package/dist/native-components/cascader.d.ts +1 -0
- package/dist/native-components/chat-widget.d.ts +1 -0
- package/dist/native-components/chat.d.ts +1 -0
- package/dist/native-components/collection-layout.d.ts +1 -0
- package/dist/native-components/command-palette.d.ts +1 -0
- package/dist/native-components/content-carousel.d.ts +1 -0
- package/dist/native-components/dashboard-canvas.d.ts +1 -0
- package/dist/native-components/date-picker.d.ts +1 -0
- package/dist/native-components/date-range-picker.d.ts +1 -0
- package/dist/native-components/date-time-picker.d.ts +1 -0
- package/dist/native-components/descriptions.d.ts +1 -0
- package/dist/native-components/drawer.d.ts +1 -0
- package/dist/native-components/float-button.d.ts +1 -0
- package/dist/native-components/font-provider.d.ts +1 -0
- package/dist/native-components/form-layout.d.ts +1 -0
- package/dist/native-components/hero-section.d.ts +1 -0
- package/dist/native-components/image-compare.d.ts +1 -0
- package/dist/native-components/logo-cloud.d.ts +1 -0
- package/dist/native-components/media-card.d.ts +1 -0
- package/dist/native-components/media-image.d.ts +1 -0
- package/dist/native-components/modal.d.ts +1 -0
- package/dist/native-components/notification-center.d.ts +1 -0
- package/dist/native-components/notification.d.ts +1 -0
- package/dist/native-components/page-layout.d.ts +1 -0
- package/dist/native-components/pagination.d.ts +1 -0
- package/dist/native-components/profile-card.d.ts +1 -0
- package/dist/native-components/qr-code.d.ts +1 -0
- package/dist/native-components/quote-card.d.ts +1 -0
- package/dist/native-components/shape-mask.d.ts +1 -0
- package/dist/native-components/sparkline.d.ts +1 -0
- package/dist/native-components/split-section.d.ts +1 -0
- package/dist/native-components/splitter.d.ts +1 -0
- package/dist/native-components/statistic.d.ts +1 -0
- package/dist/native-components/text-highlight.d.ts +1 -0
- package/dist/native-components/time-picker.d.ts +1 -0
- package/dist/native-components/timeline.d.ts +1 -0
- package/dist/native-components/tour.d.ts +1 -0
- package/dist/native-components/transfer-list.d.ts +1 -0
- package/dist/native-components/tree-select.d.ts +1 -0
- package/dist/native-components/tree-view.d.ts +1 -0
- package/dist/native-components/upload-manager.d.ts +1 -0
- package/dist/native-components/video-lightbox.d.ts +1 -0
- package/dist/native-components/video-player.d.ts +1 -0
- package/dist/native-grid.d.ts +1 -0
- package/dist/native.d.ts +1 -0
- package/dist/notification-center.css +49 -0
- package/dist/notification-center.d.ts +2 -0
- package/dist/notification-center.js +1 -0
- package/dist/notification.css +155 -0
- package/dist/notification.d.ts +2 -0
- package/dist/notification.js +1 -0
- package/dist/page-header.css +184 -0
- package/dist/page-header.d.ts +2 -0
- package/dist/page-header.js +1 -0
- package/dist/page-layout.css +117 -0
- package/dist/page-layout.d.ts +2 -0
- package/dist/page-layout.js +1 -0
- package/dist/pagination.css +127 -0
- package/dist/pagination.d.ts +2 -0
- package/dist/pagination.js +1 -0
- package/dist/primitives.d.ts +1 -0
- package/dist/profile-card.css +484 -0
- package/dist/profile-card.d.ts +2 -0
- package/dist/profile-card.js +1 -0
- package/dist/qr-code.css +125 -0
- package/dist/qr-code.d.ts +2 -0
- package/dist/qr-code.js +1 -0
- package/dist/quote-card.css +30 -0
- package/dist/quote-card.d.ts +2 -0
- package/dist/quote-card.js +1 -0
- package/dist/radio-button.css +1 -0
- package/dist/radio-button.d.ts +2 -0
- package/dist/radio-button.js +1 -0
- package/dist/radio-group.css +1 -0
- package/dist/radio-group.d.ts +2 -0
- package/dist/radio-group.js +1 -0
- package/dist/select.css +1 -0
- package/dist/select.d.ts +2 -0
- package/dist/select.js +1 -0
- package/dist/shape-mask.css +10 -0
- package/dist/shape-mask.d.ts +2 -0
- package/dist/shape-mask.js +1 -0
- package/dist/sidebar.css +183 -0
- package/dist/sidebar.d.ts +2 -0
- package/dist/sidebar.js +1 -0
- package/dist/sizes.json +1194 -0
- package/dist/skeleton.css +69 -0
- package/dist/skeleton.d.ts +2 -0
- package/dist/skeleton.js +1 -0
- package/dist/sparkline.css +38 -0
- package/dist/sparkline.d.ts +2 -0
- package/dist/sparkline.js +1 -0
- package/dist/split-section.css +34 -0
- package/dist/split-section.d.ts +2 -0
- package/dist/split-section.js +1 -0
- package/dist/splitter.css +32 -0
- package/dist/splitter.d.ts +2 -0
- package/dist/splitter.js +1 -0
- package/dist/statistic.css +107 -0
- package/dist/statistic.d.ts +2 -0
- package/dist/statistic.js +1 -0
- package/dist/styles.css +8945 -0
- package/dist/switch.css +1 -0
- package/dist/switch.d.ts +2 -0
- package/dist/switch.js +1 -0
- package/dist/table.css +1 -0
- package/dist/table.d.ts +2 -0
- package/dist/table.js +1 -0
- package/dist/text-area.css +1 -0
- package/dist/text-area.d.ts +2 -0
- package/dist/text-area.js +1 -0
- package/dist/text-highlight.css +49 -0
- package/dist/text-highlight.d.ts +2 -0
- package/dist/text-highlight.js +1 -0
- package/dist/text-input.css +1 -0
- package/dist/text-input.d.ts +2 -0
- package/dist/text-input.js +1 -0
- package/dist/theme-runtime.d.ts +1 -0
- package/dist/theme.css +1391 -0
- package/dist/theme.d.ts +10 -0
- package/dist/theme.js +1 -0
- package/dist/time-picker.css +78 -0
- package/dist/time-picker.d.ts +2 -0
- package/dist/time-picker.js +1 -0
- package/dist/timeline.css +126 -0
- package/dist/timeline.d.ts +2 -0
- package/dist/timeline.js +1 -0
- package/dist/tour.css +138 -0
- package/dist/tour.d.ts +2 -0
- package/dist/tour.js +1 -0
- package/dist/transfer-list.css +878 -0
- package/dist/transfer-list.d.ts +2 -0
- package/dist/transfer-list.js +1 -0
- package/dist/tree-select.css +135 -0
- package/dist/tree-select.d.ts +2 -0
- package/dist/tree-select.js +1 -0
- package/dist/tree-view.css +118 -0
- package/dist/tree-view.d.ts +2 -0
- package/dist/tree-view.js +1 -0
- package/dist/types.d.ts +1284 -0
- package/dist/upload-manager.css +40 -0
- package/dist/upload-manager.d.ts +2 -0
- package/dist/upload-manager.js +1 -0
- package/dist/video-lightbox.css +639 -0
- package/dist/video-lightbox.d.ts +2 -0
- package/dist/video-lightbox.js +1 -0
- package/dist/video-player.css +92 -0
- package/dist/video-player.d.ts +2 -0
- package/dist/video-player.js +1 -0
- package/docs/FORM-LAYOUT-ESSENTIALS.md +122 -0
- package/docs/PUBLISHING.md +129 -0
- package/draft-components.json +77 -0
- package/edition.json +282 -0
- package/npm-shrinkwrap.json +554 -0
- package/package.json +457 -4
- package/scripts/build.mjs +42 -0
- package/scripts/verify-package.mjs +136 -0
- package/src/advanced-types.ts +89 -0
- package/src/app-layout.ts +2 -0
- package/src/badge.ts +2 -0
- package/src/breadcrumbs.ts +2 -0
- package/src/button.ts +2 -0
- package/src/card.ts +2 -0
- package/src/cascader.ts +2 -0
- package/src/chat-widget.ts +2 -0
- package/src/chat.ts +2 -0
- package/src/checkbox.ts +2 -0
- package/src/chip-group.ts +2 -0
- package/src/chip.ts +2 -0
- package/src/collection-layout.ts +2 -0
- package/src/colors.ts +3 -0
- package/src/columns2.ts +2 -0
- package/src/columns3.ts +2 -0
- package/src/columns4.ts +2 -0
- package/src/command-palette.ts +2 -0
- package/src/component-factories/app-layout.ts +8 -0
- package/src/component-factories/breadcrumbs.ts +45 -0
- package/src/component-factories/cascader.ts +11 -0
- package/src/component-factories/chat-widget.ts +12 -0
- package/src/component-factories/chat.ts +10 -0
- package/src/component-factories/collection-layout.ts +5 -0
- package/src/component-factories/command-palette.ts +79 -0
- package/src/component-factories/content-carousel.ts +5 -0
- package/src/component-factories/dashboard-canvas.ts +11 -0
- package/src/component-factories/dashboard-panel.ts +9 -0
- package/src/component-factories/date-picker.ts +6 -0
- package/src/component-factories/date-range-picker.ts +6 -0
- package/src/component-factories/date-time-picker.ts +6 -0
- package/src/component-factories/descriptions.ts +11 -0
- package/src/component-factories/drawer.ts +12 -0
- package/src/component-factories/float-button.ts +7 -0
- package/src/component-factories/font-provider.ts +6 -0
- package/src/component-factories/hero-section.ts +5 -0
- package/src/component-factories/image-compare.ts +5 -0
- package/src/component-factories/logo-cloud.ts +5 -0
- package/src/component-factories/media-card.ts +5 -0
- package/src/component-factories/media-image.ts +5 -0
- package/src/component-factories/modal.ts +12 -0
- package/src/component-factories/notification-center.ts +13 -0
- package/src/component-factories/notification.ts +16 -0
- package/src/component-factories/page-header.ts +73 -0
- package/src/component-factories/page-layout.ts +8 -0
- package/src/component-factories/pagination.ts +11 -0
- package/src/component-factories/profile-card.ts +5 -0
- package/src/component-factories/qr-code.ts +11 -0
- package/src/component-factories/quote-card.ts +5 -0
- package/src/component-factories/shape-mask.ts +6 -0
- package/src/component-factories/sidebar.ts +98 -0
- package/src/component-factories/sparkline.ts +8 -0
- package/src/component-factories/split-section.ts +5 -0
- package/src/component-factories/splitter.ts +105 -0
- package/src/component-factories/statistic.ts +10 -0
- package/src/component-factories/text-highlight.ts +5 -0
- package/src/component-factories/time-picker.ts +6 -0
- package/src/component-factories/timeline.ts +11 -0
- package/src/component-factories/tour.ts +13 -0
- package/src/component-factories/transfer-list.ts +159 -0
- package/src/component-factories/tree-select.ts +83 -0
- package/src/component-factories/tree-view.ts +115 -0
- package/src/component-factories/upload-manager.ts +76 -0
- package/src/component-factories/video-lightbox.ts +5 -0
- package/src/component-factories/video-player.ts +5 -0
- package/src/component-runtime.ts +20 -0
- package/src/content-carousel.ts +2 -0
- package/src/content.ts +13 -0
- package/src/core.ts +6 -0
- package/src/dashboard-canvas.ts +2 -0
- package/src/dashboard-panel.ts +2 -0
- package/src/data.ts +10 -0
- package/src/date-picker.ts +2 -0
- package/src/date-range-picker.ts +2 -0
- package/src/date-time-picker.ts +2 -0
- package/src/descriptions.ts +2 -0
- package/src/dom.ts +65 -0
- package/src/drawer.ts +2 -0
- package/src/empty-state.ts +2 -0
- package/src/essentials.ts +180 -0
- package/src/feedback.ts +10 -0
- package/src/float-button.ts +2 -0
- package/src/font-provider.ts +2 -0
- package/src/form-field.ts +2 -0
- package/src/form-layout/choice.ts +66 -0
- package/src/form-layout/layout.ts +40 -0
- package/src/form-layout/select.ts +97 -0
- package/src/form-layout/shared.ts +57 -0
- package/src/form-layout/table.ts +86 -0
- package/src/form-layout/text.ts +73 -0
- package/src/form-layout/types.ts +59 -0
- package/src/form-layout.ts +12 -0
- package/src/grid-basic.ts +46 -0
- package/src/grid-spec.ts +93 -0
- package/src/grid.ts +1 -0
- package/src/hero-section.ts +2 -0
- package/src/image-compare.ts +2 -0
- package/src/index.ts +58 -0
- package/src/inputs.ts +16 -0
- package/src/layout.ts +11 -0
- package/src/logo-cloud.ts +2 -0
- package/src/media-card.ts +2 -0
- package/src/media-image.ts +2 -0
- package/src/modal.ts +2 -0
- package/src/native-base.ts +20 -0
- package/src/native-components/app-layout.ts +2 -0
- package/src/native-components/cascader.ts +2 -0
- package/src/native-components/chat-widget.ts +2 -0
- package/src/native-components/chat.ts +2 -0
- package/src/native-components/collection-layout.ts +2 -0
- package/src/native-components/command-palette.ts +2 -0
- package/src/native-components/content-carousel.ts +2 -0
- package/src/native-components/dashboard-canvas.ts +2 -0
- package/src/native-components/date-picker.ts +2 -0
- package/src/native-components/date-range-picker.ts +2 -0
- package/src/native-components/date-time-picker.ts +2 -0
- package/src/native-components/descriptions.ts +2 -0
- package/src/native-components/drawer.ts +2 -0
- package/src/native-components/float-button.ts +2 -0
- package/src/native-components/font-provider.ts +2 -0
- package/src/native-components/form-layout.ts +21 -0
- package/src/native-components/hero-section.ts +2 -0
- package/src/native-components/image-compare.ts +2 -0
- package/src/native-components/logo-cloud.ts +2 -0
- package/src/native-components/media-card.ts +2 -0
- package/src/native-components/media-image.ts +2 -0
- package/src/native-components/modal.ts +2 -0
- package/src/native-components/notification-center.ts +2 -0
- package/src/native-components/notification.ts +2 -0
- package/src/native-components/page-layout.ts +2 -0
- package/src/native-components/pagination.ts +2 -0
- package/src/native-components/profile-card.ts +2 -0
- package/src/native-components/qr-code.ts +2 -0
- package/src/native-components/quote-card.ts +2 -0
- package/src/native-components/shape-mask.ts +2 -0
- package/src/native-components/sparkline.ts +2 -0
- package/src/native-components/split-section.ts +2 -0
- package/src/native-components/splitter.ts +2 -0
- package/src/native-components/statistic.ts +2 -0
- package/src/native-components/text-highlight.ts +2 -0
- package/src/native-components/time-picker.ts +2 -0
- package/src/native-components/timeline.ts +2 -0
- package/src/native-components/tour.ts +2 -0
- package/src/native-components/transfer-list.ts +2 -0
- package/src/native-components/tree-select.ts +2 -0
- package/src/native-components/tree-view.ts +2 -0
- package/src/native-components/upload-manager.ts +2 -0
- package/src/native-components/video-lightbox.ts +2 -0
- package/src/native-components/video-player.ts +2 -0
- package/src/native-grid.ts +3 -0
- package/src/native.ts +3 -0
- package/src/notification-center.ts +2 -0
- package/src/notification.ts +2 -0
- package/src/page-header.ts +2 -0
- package/src/page-layout.ts +2 -0
- package/src/pagination.ts +2 -0
- package/src/primitives.ts +1 -0
- package/src/profile-card.ts +2 -0
- package/src/qr-code.ts +2 -0
- package/src/quote-card.ts +2 -0
- package/src/radio-button.ts +2 -0
- package/src/radio-group.ts +2 -0
- package/src/runtime/app-layout.d.ts +1 -0
- package/src/runtime/app-layout.js +168 -0
- package/src/runtime/cascader.d.ts +1 -0
- package/src/runtime/cascader.js +381 -0
- package/src/runtime/chat-widget.d.ts +1 -0
- package/src/runtime/chat-widget.js +630 -0
- package/src/runtime/chat.d.ts +1 -0
- package/src/runtime/chat.js +461 -0
- package/src/runtime/collection-layout.d.ts +1 -0
- package/src/runtime/collection-layout.js +269 -0
- package/src/runtime/command-palette.d.ts +1 -0
- package/src/runtime/command-palette.js +302 -0
- package/src/runtime/content-carousel.d.ts +1 -0
- package/src/runtime/content-carousel.js +282 -0
- package/src/runtime/dashboard-canvas.d.ts +1 -0
- package/src/runtime/dashboard-canvas.js +493 -0
- package/src/runtime/date-picker.d.ts +1 -0
- package/src/runtime/date-picker.js +826 -0
- package/src/runtime/date-range-picker.d.ts +1 -0
- package/src/runtime/date-range-picker.js +826 -0
- package/src/runtime/date-time-picker.d.ts +1 -0
- package/src/runtime/date-time-picker.js +826 -0
- package/src/runtime/descriptions.d.ts +1 -0
- package/src/runtime/descriptions.js +220 -0
- package/src/runtime/drawer.d.ts +1 -0
- package/src/runtime/drawer.js +287 -0
- package/src/runtime/empty-state.d.ts +1 -0
- package/src/runtime/empty-state.js +178 -0
- package/src/runtime/float-button.d.ts +1 -0
- package/src/runtime/float-button.js +171 -0
- package/src/runtime/font-provider.d.ts +1 -0
- package/src/runtime/font-provider.js +694 -0
- package/src/runtime/hero-section.d.ts +1 -0
- package/src/runtime/hero-section.js +186 -0
- package/src/runtime/image-compare.d.ts +1 -0
- package/src/runtime/image-compare.js +242 -0
- package/src/runtime/kernel.js +8 -0
- package/src/runtime/logo-cloud.d.ts +1 -0
- package/src/runtime/logo-cloud.js +163 -0
- package/src/runtime/media-card.d.ts +1 -0
- package/src/runtime/media-card.js +189 -0
- package/src/runtime/media-image.d.ts +1 -0
- package/src/runtime/media-image.js +480 -0
- package/src/runtime/modal.d.ts +1 -0
- package/src/runtime/modal.js +287 -0
- package/src/runtime/notification-center.d.ts +1 -0
- package/src/runtime/notification-center.js +417 -0
- package/src/runtime/notification.d.ts +1 -0
- package/src/runtime/notification.js +347 -0
- package/src/runtime/page-layout.d.ts +1 -0
- package/src/runtime/page-layout.js +105 -0
- package/src/runtime/pagination.d.ts +1 -0
- package/src/runtime/pagination.js +274 -0
- package/src/runtime/profile-card.d.ts +1 -0
- package/src/runtime/profile-card.js +512 -0
- package/src/runtime/qr-code.d.ts +1 -0
- package/src/runtime/qr-code.js +1942 -0
- package/src/runtime/quote-card.d.ts +1 -0
- package/src/runtime/quote-card.js +153 -0
- package/src/runtime/shape-mask.d.ts +1 -0
- package/src/runtime/shape-mask.js +211 -0
- package/src/runtime/sparkline.d.ts +1 -0
- package/src/runtime/sparkline.js +197 -0
- package/src/runtime/split-section.d.ts +1 -0
- package/src/runtime/split-section.js +148 -0
- package/src/runtime/splitter.d.ts +1 -0
- package/src/runtime/splitter.js +278 -0
- package/src/runtime/statistic.d.ts +1 -0
- package/src/runtime/statistic.js +204 -0
- package/src/runtime/text-highlight.d.ts +1 -0
- package/src/runtime/text-highlight.js +194 -0
- package/src/runtime/time-picker.d.ts +1 -0
- package/src/runtime/time-picker.js +826 -0
- package/src/runtime/timeline.d.ts +1 -0
- package/src/runtime/timeline.js +213 -0
- package/src/runtime/tour.d.ts +1 -0
- package/src/runtime/tour.js +412 -0
- package/src/runtime/transfer.d.ts +1 -0
- package/src/runtime/transfer.js +88 -0
- package/src/runtime/tree-select.d.ts +1 -0
- package/src/runtime/tree-select.js +420 -0
- package/src/runtime/tree.d.ts +1 -0
- package/src/runtime/tree.js +302 -0
- package/src/runtime/upload-manager.d.ts +1 -0
- package/src/runtime/upload-manager.js +408 -0
- package/src/runtime/video-lightbox.d.ts +1 -0
- package/src/runtime/video-lightbox.js +1117 -0
- package/src/runtime/video-player.d.ts +1 -0
- package/src/runtime/video-player.js +770 -0
- package/src/select.ts +2 -0
- package/src/shape-mask.ts +2 -0
- package/src/sidebar.ts +2 -0
- package/src/skeleton.ts +2 -0
- package/src/sparkline.ts +2 -0
- package/src/split-section.ts +2 -0
- package/src/splitter.ts +2 -0
- package/src/statistic.ts +2 -0
- package/src/switch.ts +2 -0
- package/src/table.ts +2 -0
- package/src/text-area.ts +2 -0
- package/src/text-highlight.ts +2 -0
- package/src/text-input.ts +2 -0
- package/src/theme-runtime.ts +70 -0
- package/src/theme.ts +32 -0
- package/src/time-picker.ts +2 -0
- package/src/timeline.ts +2 -0
- package/src/tour.ts +2 -0
- package/src/transfer-list.ts +2 -0
- package/src/tree-select.ts +2 -0
- package/src/tree-view.ts +2 -0
- package/src/types.ts +1287 -0
- package/src/upload-manager.ts +2 -0
- package/src/video-lightbox.ts +2 -0
- package/src/video-player.ts +2 -0
- package/styles/app-layout.css +115 -0
- package/styles/badge.css +131 -0
- package/styles/breadcrumbs.css +77 -0
- package/styles/button.css +625 -0
- package/styles/card.css +119 -0
- package/styles/cascader.css +152 -0
- package/styles/chat-widget.css +121 -0
- package/styles/chat.css +66 -0
- package/styles/checkbox.css +1 -0
- package/styles/chip-group.css +44 -0
- package/styles/chip.css +191 -0
- package/styles/collection-layout.css +30 -0
- package/styles/columns2.css +1 -0
- package/styles/columns3.css +1 -0
- package/styles/columns4.css +1 -0
- package/styles/command-palette.css +35 -0
- package/styles/content-carousel.css +34 -0
- package/styles/dashboard-canvas.css +49 -0
- package/styles/dashboard-panel.css +2 -0
- package/styles/date-picker.css +78 -0
- package/styles/date-range-picker.css +78 -0
- package/styles/date-time-picker.css +78 -0
- package/styles/descriptions.css +113 -0
- package/styles/drawer.css +215 -0
- package/styles/empty-state.css +110 -0
- package/styles/float-button.css +28 -0
- package/styles/font-provider.css +5 -0
- package/styles/form-field.css +1 -0
- package/styles/form-layout.css +62 -0
- package/styles/grid-basic.css +12 -0
- package/styles/hero-section.css +41 -0
- package/styles/image-compare.css +35 -0
- package/styles/logo-cloud.css +33 -0
- package/styles/marketing-template-layout.css +30 -0
- package/styles/media-card.css +41 -0
- package/styles/media-image.css +531 -0
- package/styles/modal.css +210 -0
- package/styles/notification-center.css +49 -0
- package/styles/notification.css +155 -0
- package/styles/page-header.css +184 -0
- package/styles/page-layout.css +117 -0
- package/styles/pagination.css +127 -0
- package/styles/profile-card.css +484 -0
- package/styles/qr-code.css +125 -0
- package/styles/quote-card.css +30 -0
- package/styles/radio-button.css +1 -0
- package/styles/radio-group.css +1 -0
- package/styles/select.css +1 -0
- package/styles/shape-mask.css +10 -0
- package/styles/sidebar.css +183 -0
- package/styles/skeleton.css +69 -0
- package/styles/sparkline.css +38 -0
- package/styles/split-section.css +34 -0
- package/styles/splitter.css +32 -0
- package/styles/statistic.css +107 -0
- package/styles/switch.css +1 -0
- package/styles/table.css +1 -0
- package/styles/text-area.css +1 -0
- package/styles/text-highlight.css +49 -0
- package/styles/text-input.css +1 -0
- package/styles/theme.css +1391 -0
- package/styles/time-picker.css +78 -0
- package/styles/timeline.css +126 -0
- package/styles/tour.css +138 -0
- package/styles/transfer-list.css +878 -0
- package/styles/tree-select.css +135 -0
- package/styles/tree-view.css +118 -0
- package/styles/upload-manager.css +40 -0
- package/styles/video-lightbox.css +639 -0
- package/styles/video-player.css +92 -0
- package/test/contracts.test.mjs +8 -0
- package/test/form-layout.test.mjs +28 -0
- package/test/isolation.test.mjs +36 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,630 @@
|
|
|
1
|
+
// ../blu-grid/docs/scripts/chat/shared.js
|
|
2
|
+
import { state, register } from "./kernel.js";
|
|
3
|
+
var shared = state("chat", () => ({ instances: /* @__PURE__ */ new Map(), serial: 0 }));
|
|
4
|
+
var uid = (prefix) => prefix + "-" + ++shared.serial;
|
|
5
|
+
function node(tag, cls, text) {
|
|
6
|
+
const n = document.createElement(tag);
|
|
7
|
+
if (cls) n.className = cls;
|
|
8
|
+
if (text !== void 0) n.textContent = String(text);
|
|
9
|
+
return n;
|
|
10
|
+
}
|
|
11
|
+
function attr(n, name, value) {
|
|
12
|
+
n.setAttribute(name, String(value));
|
|
13
|
+
return n;
|
|
14
|
+
}
|
|
15
|
+
function button(label, action, cls = "blu-chat__button") {
|
|
16
|
+
const n = node("button", cls, label);
|
|
17
|
+
n.type = "button";
|
|
18
|
+
n.addEventListener("click", action);
|
|
19
|
+
return n;
|
|
20
|
+
}
|
|
21
|
+
function emit(s, name, ...args) {
|
|
22
|
+
if (s.dead || !s.events[name]) return;
|
|
23
|
+
try {
|
|
24
|
+
Promise.resolve(s.events[name](...args)).catch((e) => report(s, e));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
report(s, e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function report(s, e) {
|
|
30
|
+
if (s.dead) return;
|
|
31
|
+
const message = e?.message || String(e);
|
|
32
|
+
s.notice.textContent = message;
|
|
33
|
+
if (s.lastError !== message) {
|
|
34
|
+
s.lastError = message;
|
|
35
|
+
emit(s, "Error", message);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function announce(s, text) {
|
|
39
|
+
s.notice.textContent = text;
|
|
40
|
+
}
|
|
41
|
+
function createAPI(kind, init, update) {
|
|
42
|
+
const destroy = (key) => {
|
|
43
|
+
const s = shared.instances.get(key);
|
|
44
|
+
if (!s || s.kind !== kind) return;
|
|
45
|
+
s.dead = true;
|
|
46
|
+
s.dispose?.();
|
|
47
|
+
s.root.remove();
|
|
48
|
+
s.notice.remove();
|
|
49
|
+
if (s.host._bluChatOwner === key) delete s.host._bluChatOwner;
|
|
50
|
+
shared.instances.delete(key);
|
|
51
|
+
};
|
|
52
|
+
return register(kind, () => ({ sync(id, options = {}, events = {}, owner) {
|
|
53
|
+
const host = document.getElementById(id);
|
|
54
|
+
if (!host) return "Chat component host was not found.";
|
|
55
|
+
const key = owner || id;
|
|
56
|
+
let s = shared.instances.get(key);
|
|
57
|
+
if (s && (s.host !== host || s.kind !== kind)) {
|
|
58
|
+
s.destroy(s.key);
|
|
59
|
+
s = null;
|
|
60
|
+
}
|
|
61
|
+
const old = shared.instances.get(host._bluChatOwner);
|
|
62
|
+
if (old && old !== s) old.destroy(old.key);
|
|
63
|
+
if (!s) {
|
|
64
|
+
s = { key, host, kind, uid: uid("blu-chat"), events, options, dead: false, destroy };
|
|
65
|
+
s.root = node("div");
|
|
66
|
+
s.notice = attr(node("div", "blu-chat-sr"), "role", "status");
|
|
67
|
+
attr(s.notice, "aria-atomic", "true");
|
|
68
|
+
host.append(s.root, s.notice);
|
|
69
|
+
shared.instances.set(key, s);
|
|
70
|
+
host._bluChatOwner = key;
|
|
71
|
+
try {
|
|
72
|
+
init(s);
|
|
73
|
+
} catch (e) {
|
|
74
|
+
destroy(key);
|
|
75
|
+
throw e;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
s.events = events;
|
|
79
|
+
s.options = options;
|
|
80
|
+
try {
|
|
81
|
+
update(s);
|
|
82
|
+
s.lastError = "";
|
|
83
|
+
host.dataset.bluRuntimeReady = "true";
|
|
84
|
+
return "";
|
|
85
|
+
} catch (e) {
|
|
86
|
+
report(s, e);
|
|
87
|
+
return e.message || String(e);
|
|
88
|
+
}
|
|
89
|
+
}, destroy }));
|
|
90
|
+
}
|
|
91
|
+
function array(value, name) {
|
|
92
|
+
const parsed = typeof value === "string" ? JSON.parse(value || "[]") : value || [];
|
|
93
|
+
if (!Array.isArray(parsed)) throw Error(name + " must be a list.");
|
|
94
|
+
const keys = /* @__PURE__ */ new Set();
|
|
95
|
+
return parsed.map((item) => {
|
|
96
|
+
if (!item || typeof item.Key !== "string" || !item.Key || keys.has(item.Key)) throw Error(name + " requires unique, nonempty Keys.");
|
|
97
|
+
keys.add(item.Key);
|
|
98
|
+
return item;
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function safeUrl(value) {
|
|
102
|
+
try {
|
|
103
|
+
const u = new URL(String(value), document.baseURI);
|
|
104
|
+
return ["https:", "http:", "mailto:"].includes(u.protocol) ? u.href : null;
|
|
105
|
+
} catch (_) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function icon(name) {
|
|
110
|
+
const paths = { Chat: "M21 11.5a8.4 8.4 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.4 8.4 0 0 1-3.8-.9L3 21l1.9-5.7a8.4 8.4 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.4 8.4 0 0 1 3.8-.9H13a8.5 8.5 0 0 1 8 8v.5Z", Plus: "M12 5v14M5 12h14", Up: "m5 12 7-7 7 7M12 5v14", Help: "M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3m.1 4h.01M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0", Feedback: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2ZM7 8h10M7 12h6", Close: "m6 6 12 12M6 18 18 6", Expand: "M8 3H3v5m13-5h5v5M3 16v5h5m13-5v5h-5", Send: "m22 2-7 20-4-9-9-4 20-7ZM22 2 11 13", Stop: "M6 6h12v12H6Z" };
|
|
111
|
+
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
112
|
+
for (const [k, v] of Object.entries({ viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.8", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true", focusable: "false" })) svg.setAttribute(k, v);
|
|
113
|
+
const p = document.createElementNS(svg.namespaceURI, "path");
|
|
114
|
+
p.setAttribute("d", paths[name] || paths.Chat);
|
|
115
|
+
svg.append(p);
|
|
116
|
+
return svg;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ../blu-grid/docs/scripts/chat/markdown.js
|
|
120
|
+
function inline(parent, text) {
|
|
121
|
+
const pattern = /(`[^`\n]+`|\*\*[^*\n]+\*\*|\*[^*\n]+\*|\[[^\]\n]+\]\([^\s)]+\))/g;
|
|
122
|
+
let start = 0;
|
|
123
|
+
for (const match of text.matchAll(pattern)) {
|
|
124
|
+
parent.append(document.createTextNode(text.slice(start, match.index)));
|
|
125
|
+
const t = match[0];
|
|
126
|
+
let n;
|
|
127
|
+
if (t.startsWith("`")) n = node("code", "", t.slice(1, -1));
|
|
128
|
+
else if (t.startsWith("**")) n = node("strong", "", t.slice(2, -2));
|
|
129
|
+
else if (t.startsWith("*")) n = node("em", "", t.slice(1, -1));
|
|
130
|
+
else {
|
|
131
|
+
const split = t.indexOf("]("), url = safeUrl(t.slice(split + 2, -1));
|
|
132
|
+
n = node(url ? "a" : "span", "", t.slice(1, split));
|
|
133
|
+
if (url) {
|
|
134
|
+
n.href = url;
|
|
135
|
+
n.target = "_blank";
|
|
136
|
+
n.rel = "noopener noreferrer";
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
parent.append(n);
|
|
140
|
+
start = match.index + t.length;
|
|
141
|
+
}
|
|
142
|
+
parent.append(document.createTextNode(text.slice(start)));
|
|
143
|
+
}
|
|
144
|
+
function markdown(parent, value, enabled = true) {
|
|
145
|
+
parent.replaceChildren();
|
|
146
|
+
const text = String(value || "");
|
|
147
|
+
if (!enabled) {
|
|
148
|
+
parent.append(node("p", "", text));
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
let code = null, lines = [], list = null;
|
|
152
|
+
const flush = () => {
|
|
153
|
+
if (code) {
|
|
154
|
+
code.textContent = lines.join("\n");
|
|
155
|
+
code = null;
|
|
156
|
+
lines = [];
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
for (const line of text.split("\n")) {
|
|
160
|
+
if (/^\s*```/.test(line)) {
|
|
161
|
+
if (code) {
|
|
162
|
+
flush();
|
|
163
|
+
} else {
|
|
164
|
+
const pre = node("pre");
|
|
165
|
+
code = node("code");
|
|
166
|
+
pre.append(code);
|
|
167
|
+
parent.append(pre);
|
|
168
|
+
}
|
|
169
|
+
list = null;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (code) {
|
|
173
|
+
lines.push(line);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (!line.trim()) {
|
|
177
|
+
list = null;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const bullet = /^\s*([-*]|\d+\.)\s+(.+)$/.exec(line);
|
|
181
|
+
if (bullet) {
|
|
182
|
+
const tag = /\d/.test(bullet[1]) ? "ol" : "ul";
|
|
183
|
+
if (!list || list.tagName.toLowerCase() !== tag) {
|
|
184
|
+
list = node(tag);
|
|
185
|
+
parent.append(list);
|
|
186
|
+
}
|
|
187
|
+
const li = node("li");
|
|
188
|
+
inline(li, bullet[2]);
|
|
189
|
+
list.append(li);
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
list = null;
|
|
193
|
+
const heading = /^#{1,6}\s+(.+)$/.exec(line);
|
|
194
|
+
const p = node(heading ? "h3" : "p");
|
|
195
|
+
inline(p, heading ? heading[1] : line);
|
|
196
|
+
parent.append(p);
|
|
197
|
+
}
|
|
198
|
+
flush();
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// ../blu-grid/docs/scripts/chat/chat.js
|
|
202
|
+
var busy = (s) => s.status === "Waiting" || s.status === "Streaming";
|
|
203
|
+
function send(s, text, retry = false) {
|
|
204
|
+
if (s.options.IsDisabled || busy(s) || !text.trim()) return;
|
|
205
|
+
const limit = Math.max(1, Number(s.options.MaxLength) || 4e3);
|
|
206
|
+
if (text.length > limit) {
|
|
207
|
+
announce(s, "Message exceeds the character limit.");
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
s.lastText = text.trim();
|
|
211
|
+
s.request = uid("chat-request");
|
|
212
|
+
s.active = s.request;
|
|
213
|
+
s.cancelled = false;
|
|
214
|
+
s.status = "Waiting";
|
|
215
|
+
s.error = "";
|
|
216
|
+
s.input.value = "";
|
|
217
|
+
s.input.style.height = "";
|
|
218
|
+
renderState(s);
|
|
219
|
+
announce(s, "Waiting for a response.");
|
|
220
|
+
emit(s, retry ? "Retry" : "Send", s.request, s.lastText);
|
|
221
|
+
}
|
|
222
|
+
function renderState(s) {
|
|
223
|
+
const o = s.options, isBusy = busy(s);
|
|
224
|
+
const focus = document.activeElement;
|
|
225
|
+
const restoreFocus = focus === s.send && isBusy || focus === s.stop && !isBusy || s.failure.contains(focus) && s.status !== "Error" || s.suggestions.contains(focus) && isBusy;
|
|
226
|
+
s.input.disabled = !!o.IsDisabled;
|
|
227
|
+
s.send.disabled = !!o.IsDisabled || isBusy || !s.input.value.trim();
|
|
228
|
+
s.send.hidden = isBusy;
|
|
229
|
+
s.stop.hidden = !isBusy;
|
|
230
|
+
s.stop.disabled = !!o.IsDisabled;
|
|
231
|
+
s.wait.hidden = !isBusy;
|
|
232
|
+
s.waitText.textContent = s.status === "Streaming" ? "Writing a response" : "Waiting for a response";
|
|
233
|
+
s.failure.hidden = s.status !== "Error";
|
|
234
|
+
s.errorText.textContent = s.error || "The response could not be completed.";
|
|
235
|
+
s.retry.disabled = !!o.IsDisabled || !s.lastText;
|
|
236
|
+
s.suggestions.querySelectorAll("button").forEach((b) => b.disabled = !!o.IsDisabled || isBusy);
|
|
237
|
+
attr(s.list, "aria-busy", isBusy);
|
|
238
|
+
if (restoreFocus && !s.input.disabled) s.input.focus({ preventScroll: true });
|
|
239
|
+
}
|
|
240
|
+
function createMessage(s, m, animate) {
|
|
241
|
+
const row = node("li", "blu-chat__message");
|
|
242
|
+
row.dataset.key = m.Key;
|
|
243
|
+
row.dataset.role = m.Role;
|
|
244
|
+
if (animate) row.classList.add("blu-chat__message--new");
|
|
245
|
+
const avatar = node("span", "blu-chat__avatar");
|
|
246
|
+
attr(avatar, "aria-hidden", "true");
|
|
247
|
+
const column = node("div", "blu-chat__message-column"), meta = node("div", "blu-chat__meta"), name = node("strong"), time = node("span"), body = node("div", "blu-chat__prose");
|
|
248
|
+
const copy = button("Copy", async () => {
|
|
249
|
+
try {
|
|
250
|
+
await navigator.clipboard.writeText(row._message.Content);
|
|
251
|
+
if (s.dead) return;
|
|
252
|
+
announce(s, "Message copied.");
|
|
253
|
+
emit(s, "Copy", row._message.Key);
|
|
254
|
+
} catch (_) {
|
|
255
|
+
announce(s, "Copy is unavailable. Select the message text to copy it.");
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
copy.classList.add("blu-chat__copy");
|
|
259
|
+
meta.append(name, time);
|
|
260
|
+
column.append(meta, body, copy);
|
|
261
|
+
row.append(avatar, column);
|
|
262
|
+
return { row, avatar, name, time, body, copy };
|
|
263
|
+
}
|
|
264
|
+
function renderMessages(s, messages) {
|
|
265
|
+
const bottom = s.scroller.scrollHeight - s.scroller.scrollTop - s.scroller.clientHeight < 64;
|
|
266
|
+
const focus = document.activeElement, hadFocus = s.list.contains(focus), keys = new Set(messages.map((m) => m.Key));
|
|
267
|
+
for (const [key, r] of s.rows) if (!keys.has(key)) {
|
|
268
|
+
r.row.remove();
|
|
269
|
+
s.rows.delete(key);
|
|
270
|
+
}
|
|
271
|
+
messages.forEach((m, i) => {
|
|
272
|
+
let r = s.rows.get(m.Key);
|
|
273
|
+
if (!r) {
|
|
274
|
+
r = createMessage(s, m, s.initialized && s.options.Animate !== false);
|
|
275
|
+
s.rows.set(m.Key, r);
|
|
276
|
+
}
|
|
277
|
+
r.row._message = m;
|
|
278
|
+
r.row.dataset.role = m.Role;
|
|
279
|
+
const author = m.Name || (m.Role === "User" ? "You" : m.Role === "System" ? "Notice" : s.options.AssistantName || "Assistant");
|
|
280
|
+
r.name.textContent = author;
|
|
281
|
+
r.time.textContent = m.Timestamp || "";
|
|
282
|
+
r.time.hidden = !s.options.ShowTimestamps || !m.Timestamp;
|
|
283
|
+
r.avatar.hidden = s.options.ShowAvatars === false;
|
|
284
|
+
const avatarUrl = m.AvatarUrl && safeUrl(m.AvatarUrl);
|
|
285
|
+
const avatarSignature = avatarUrl || author;
|
|
286
|
+
if (r.avatarSignature !== avatarSignature) {
|
|
287
|
+
r.avatarSignature = avatarSignature;
|
|
288
|
+
r.avatar.replaceChildren();
|
|
289
|
+
if (avatarUrl && /^https?:/.test(avatarUrl)) {
|
|
290
|
+
const img = node("img");
|
|
291
|
+
img.src = avatarUrl;
|
|
292
|
+
img.alt = "";
|
|
293
|
+
r.avatar.append(img);
|
|
294
|
+
} else r.avatar.textContent = author.slice(0, 1).toUpperCase();
|
|
295
|
+
}
|
|
296
|
+
const signature = JSON.stringify([m.Content, s.options.EnableMarkdown]);
|
|
297
|
+
if (r.signature !== signature) {
|
|
298
|
+
r.signature = signature;
|
|
299
|
+
markdown(r.body, m.Content, s.options.EnableMarkdown !== false);
|
|
300
|
+
}
|
|
301
|
+
r.copy.hidden = s.options.AllowCopy === false || !m.Content;
|
|
302
|
+
attr(r.copy, "aria-label", "Copy message from " + author);
|
|
303
|
+
if (s.list.children[i] !== r.row) s.list.insertBefore(r.row, s.list.children[i] || null);
|
|
304
|
+
});
|
|
305
|
+
s.empty.hidden = !!messages.length;
|
|
306
|
+
if (hadFocus && !focus.isConnected) s.input.focus({ preventScroll: true });
|
|
307
|
+
if (bottom || !s.initialized) {
|
|
308
|
+
s.scroller.scrollTop = s.scroller.scrollHeight;
|
|
309
|
+
s.jump.hidden = true;
|
|
310
|
+
} else s.jump.hidden = false;
|
|
311
|
+
s.initialized = true;
|
|
312
|
+
}
|
|
313
|
+
function installChat() {
|
|
314
|
+
return createAPI("Chat", (s) => {
|
|
315
|
+
s.root.className = "blu-chat";
|
|
316
|
+
s.rows = /* @__PURE__ */ new Map();
|
|
317
|
+
s.status = "Idle";
|
|
318
|
+
s.messages = [];
|
|
319
|
+
s.suggestionSignature = "";
|
|
320
|
+
const header = node("header", "blu-chat__header");
|
|
321
|
+
s.heading = node("h2");
|
|
322
|
+
s.subtitle = node("p");
|
|
323
|
+
const headText = node("div");
|
|
324
|
+
headText.append(s.heading, s.subtitle);
|
|
325
|
+
s.header = header;
|
|
326
|
+
header.append(headText);
|
|
327
|
+
s.scroller = attr(node("div", "blu-chat__scroll"), "tabindex", "0");
|
|
328
|
+
attr(s.scroller, "role", "region");
|
|
329
|
+
attr(s.scroller, "aria-label", "Conversation messages");
|
|
330
|
+
s.empty = node("div", "blu-chat__empty");
|
|
331
|
+
s.empty.append(icon("Chat"));
|
|
332
|
+
s.welcome = node("h3");
|
|
333
|
+
s.description = node("p");
|
|
334
|
+
s.empty.append(s.welcome, s.description);
|
|
335
|
+
s.list = attr(node("ol", "blu-chat__messages"), "aria-label", "Messages");
|
|
336
|
+
s.scroller.append(s.empty, s.list);
|
|
337
|
+
s.wait = node("div", "blu-chat__waiting");
|
|
338
|
+
const dots = node("span", "blu-chat__dots");
|
|
339
|
+
attr(dots, "aria-hidden", "true");
|
|
340
|
+
for (let i = 0; i < 3; i++) dots.append(node("i"));
|
|
341
|
+
s.waitText = node("span");
|
|
342
|
+
s.wait.append(dots, s.waitText);
|
|
343
|
+
s.wait.hidden = true;
|
|
344
|
+
s.jump = button("\u2193 Latest messages", () => {
|
|
345
|
+
s.scroller.scrollTop = s.scroller.scrollHeight;
|
|
346
|
+
s.jump.hidden = true;
|
|
347
|
+
});
|
|
348
|
+
s.jump.classList.add("blu-chat__jump");
|
|
349
|
+
s.jump.hidden = true;
|
|
350
|
+
s.scroller.addEventListener("scroll", () => {
|
|
351
|
+
if (s.scroller.scrollHeight - s.scroller.scrollTop - s.scroller.clientHeight < 64) s.jump.hidden = true;
|
|
352
|
+
});
|
|
353
|
+
s.failure = node("div", "blu-chat__failure");
|
|
354
|
+
s.errorText = node("span");
|
|
355
|
+
s.retry = button("Retry", () => send(s, s.lastText || "", true));
|
|
356
|
+
s.failure.append(s.errorText, s.retry);
|
|
357
|
+
s.failure.hidden = true;
|
|
358
|
+
s.suggestions = node("div", "blu-chat__suggestions");
|
|
359
|
+
const form = node("form", "blu-chat__composer");
|
|
360
|
+
s.input = attr(node("textarea"), "aria-label", "Message");
|
|
361
|
+
s.input.rows = 2;
|
|
362
|
+
s.input.placeholder = "Write a message\u2026";
|
|
363
|
+
const actions = node("div", "blu-chat__composer-actions");
|
|
364
|
+
s.hint = node("span", "blu-chat__hint", "Enter to send \xB7 Shift+Enter for a new line");
|
|
365
|
+
s.send = button("Send", () => {
|
|
366
|
+
});
|
|
367
|
+
s.send.replaceChildren(icon("Send"));
|
|
368
|
+
attr(s.send, "aria-label", "Send message");
|
|
369
|
+
s.send.type = "submit";
|
|
370
|
+
s.send.classList.add("blu-chat__send");
|
|
371
|
+
s.stop = button("Stop", () => {
|
|
372
|
+
const id = s.active;
|
|
373
|
+
if (!id) return;
|
|
374
|
+
s.active = null;
|
|
375
|
+
s.cancelled = true;
|
|
376
|
+
s.status = "Idle";
|
|
377
|
+
renderState(s);
|
|
378
|
+
announce(s, "Response stopped.");
|
|
379
|
+
emit(s, "Stop", id);
|
|
380
|
+
s.input.focus();
|
|
381
|
+
});
|
|
382
|
+
s.stop.prepend(icon("Stop"));
|
|
383
|
+
s.stop.hidden = true;
|
|
384
|
+
actions.append(s.hint, s.send, s.stop);
|
|
385
|
+
form.append(s.input, actions);
|
|
386
|
+
form.addEventListener("submit", (e) => {
|
|
387
|
+
e.preventDefault();
|
|
388
|
+
send(s, s.input.value);
|
|
389
|
+
});
|
|
390
|
+
s.input.addEventListener("input", () => {
|
|
391
|
+
s.input.style.height = "auto";
|
|
392
|
+
s.input.style.height = Math.min(160, s.input.scrollHeight) + "px";
|
|
393
|
+
renderState(s);
|
|
394
|
+
});
|
|
395
|
+
s.input.addEventListener("keydown", (e) => {
|
|
396
|
+
if (e.key === "Enter" && !e.shiftKey && !e.isComposing && e.keyCode !== 229) {
|
|
397
|
+
e.preventDefault();
|
|
398
|
+
send(s, s.input.value);
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
s.root.append(header, s.scroller, s.jump, s.wait, s.failure, s.suggestions, form);
|
|
402
|
+
}, (s) => {
|
|
403
|
+
const o = s.options, previousStatus = s.status;
|
|
404
|
+
const reset = s.reset !== o.ResetKey;
|
|
405
|
+
if (reset) {
|
|
406
|
+
s.request = null;
|
|
407
|
+
s.active = null;
|
|
408
|
+
s.cancelled = false;
|
|
409
|
+
s.lastText = "";
|
|
410
|
+
s.input.value = "";
|
|
411
|
+
s.initialized = false;
|
|
412
|
+
s.reset = o.ResetKey;
|
|
413
|
+
announce(s, "");
|
|
414
|
+
}
|
|
415
|
+
const response = o.ResponseRequestId || "";
|
|
416
|
+
const accept = response ? response === s.request && !s.cancelled : !s.active;
|
|
417
|
+
if (accept) {
|
|
418
|
+
const messages = array(o.MessagesJson, "Messages").map((m) => {
|
|
419
|
+
if (!["User", "Assistant", "System"].includes(m.Role) || typeof m.Content !== "string") throw Error("Each message needs Role (User, Assistant, System) and Content.");
|
|
420
|
+
return m;
|
|
421
|
+
});
|
|
422
|
+
const status = ["Waiting", "Streaming", "Error"].includes(o.Status) ? o.Status : "Idle";
|
|
423
|
+
s.messages = messages;
|
|
424
|
+
s.status = status;
|
|
425
|
+
s.error = String(o.ErrorMessage || "");
|
|
426
|
+
if (!busy(s)) s.active = null;
|
|
427
|
+
}
|
|
428
|
+
s.root.dataset.animate = String(o.Animate !== false);
|
|
429
|
+
s.root.style.height = Math.max(280, Math.min(1200, Number(o.Height) || 520)) + "px";
|
|
430
|
+
s.heading.textContent = o.Title || "Chat";
|
|
431
|
+
s.subtitle.textContent = o.Subtitle || "";
|
|
432
|
+
s.subtitle.hidden = !o.Subtitle;
|
|
433
|
+
s.header.hidden = o.ShowHeader === false;
|
|
434
|
+
attr(s.scroller, "aria-label", o.AccessibleLabel || (o.Title || "Chat") + " messages");
|
|
435
|
+
s.welcome.textContent = o.WelcomeTitle || "How can I help?";
|
|
436
|
+
s.description.textContent = o.WelcomeMessage || "Ask a question to start a conversation.";
|
|
437
|
+
s.input.placeholder = o.Placeholder || "Write a message\u2026";
|
|
438
|
+
s.input.maxLength = Math.max(1, Number(o.MaxLength) || 4e3);
|
|
439
|
+
const suggestions = array(o.SuggestionsJson, "Suggestions"), signature = JSON.stringify(suggestions);
|
|
440
|
+
if (signature !== s.suggestionSignature) {
|
|
441
|
+
s.suggestionSignature = signature;
|
|
442
|
+
s.suggestions.replaceChildren();
|
|
443
|
+
suggestions.forEach((p) => {
|
|
444
|
+
const b = button(p.Label || p.Text, () => send(s, p.Text || p.Label));
|
|
445
|
+
s.suggestions.append(b);
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
renderMessages(s, s.messages);
|
|
449
|
+
renderState(s);
|
|
450
|
+
if (previousStatus !== s.status) {
|
|
451
|
+
if (s.status === "Error") announce(s, s.error || "Response failed. Retry is available.");
|
|
452
|
+
else if (!reset && !busy(s) && busy({ status: previousStatus })) {
|
|
453
|
+
const last = [...s.messages].reverse().find((m) => m.Role === "Assistant");
|
|
454
|
+
announce(s, last ? "Assistant: " + last.Content : "Response complete.");
|
|
455
|
+
} else if (s.status === "Waiting") announce(s, "Waiting for a response.");
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// ../blu-grid/docs/scripts/chat/float-button.js
|
|
461
|
+
function syncIcon(s) {
|
|
462
|
+
const name = s.options.Icon || "Chat", url = String(s.options.IconUrl || "").trim();
|
|
463
|
+
if (s.iconName === name && s.iconUrl === url) return;
|
|
464
|
+
if (s.iconImage) s.iconImage.onload = s.iconImage.onerror = null;
|
|
465
|
+
s.iconName = name;
|
|
466
|
+
s.iconUrl = url;
|
|
467
|
+
s.iconImage = null;
|
|
468
|
+
s.glyph.replaceChildren(icon(name));
|
|
469
|
+
if (!url) return;
|
|
470
|
+
let source;
|
|
471
|
+
try {
|
|
472
|
+
source = new URL(url, document.baseURI);
|
|
473
|
+
if (!["https:", "http:"].includes(source.protocol)) throw Error();
|
|
474
|
+
} catch (_) {
|
|
475
|
+
report(s, "FloatButton IconUrl must be an HTTP(S) or relative image URL. Using the built-in Icon.");
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
const img = node("img");
|
|
479
|
+
s.iconImage = img;
|
|
480
|
+
img.alt = "";
|
|
481
|
+
img.width = 24;
|
|
482
|
+
img.height = 24;
|
|
483
|
+
img.draggable = false;
|
|
484
|
+
img.onload = () => {
|
|
485
|
+
if (!s.dead && s.iconImage === img) s.glyph.replaceChildren(img);
|
|
486
|
+
};
|
|
487
|
+
img.onerror = () => {
|
|
488
|
+
if (!s.dead && s.iconImage === img) report(s, "FloatButton could not load IconUrl. Using the built-in Icon.");
|
|
489
|
+
};
|
|
490
|
+
img.src = source.href;
|
|
491
|
+
}
|
|
492
|
+
function installFloatButton() {
|
|
493
|
+
return createAPI("FloatButton", (s) => {
|
|
494
|
+
s.root.className = "blu-float";
|
|
495
|
+
s.button = button("", () => {
|
|
496
|
+
if (!s.options.IsDisabled) emit(s, "Click");
|
|
497
|
+
}, "blu-float__button");
|
|
498
|
+
s.glyph = node("span", "blu-float__icon");
|
|
499
|
+
s.label = node("span", "blu-float__label");
|
|
500
|
+
s.badge = node("span", "blu-float__badge");
|
|
501
|
+
attr(s.glyph, "aria-hidden", "true");
|
|
502
|
+
s.dispose = () => {
|
|
503
|
+
if (s.iconImage) s.iconImage.onload = s.iconImage.onerror = null;
|
|
504
|
+
};
|
|
505
|
+
attr(s.badge, "aria-hidden", "true");
|
|
506
|
+
s.button.append(s.glyph, s.label, s.badge);
|
|
507
|
+
s.root.append(s.button);
|
|
508
|
+
}, (s) => {
|
|
509
|
+
const o = s.options, label = String(o.Label || "Open chat"), placement = ["BottomLeft", "TopLeft", "TopRight"].includes(o.Placement) ? o.Placement : "BottomRight";
|
|
510
|
+
s.root.dataset.placement = placement;
|
|
511
|
+
s.root.dataset.position = o.Position === "Container" ? "Container" : "Viewport";
|
|
512
|
+
s.root.dataset.animate = String(o.Animate !== false);
|
|
513
|
+
s.root.dataset.shape = o.Shape === "Square" ? "Square" : "Circle";
|
|
514
|
+
s.root.style.setProperty("--blu-float-offset", Math.max(8, Math.min(160, Number(o.Offset) || 24)) + "px");
|
|
515
|
+
const color = String(o.Color || "Primary").toLowerCase().replace(/[^a-z]/g, "");
|
|
516
|
+
s.root.style.setProperty("--blu-float-solid", `var(--bluui-color-${color}-solid,var(--bluui-color-primary-solid,#4f46e5))`);
|
|
517
|
+
s.root.style.setProperty("--blu-float-contrast", `var(--bluui-color-${color}-contrast,#fff)`);
|
|
518
|
+
const target = o.Position === "Container" ? s.host : document.body;
|
|
519
|
+
if (s.root.parentNode !== target) target.append(s.root);
|
|
520
|
+
s.button.disabled = !!o.IsDisabled;
|
|
521
|
+
s.button.title = label;
|
|
522
|
+
const badge = Math.max(0, Math.floor(Number(o.BadgeCount) || 0));
|
|
523
|
+
attr(s.button, "aria-label", label + (badge ? `, ${badge} unread` : ""));
|
|
524
|
+
s.label.textContent = label;
|
|
525
|
+
s.label.hidden = !o.ShowLabel;
|
|
526
|
+
s.badge.textContent = badge > 99 ? "99+" : String(badge);
|
|
527
|
+
s.badge.hidden = !badge;
|
|
528
|
+
syncIcon(s);
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// ../blu-grid/docs/scripts/chat/chat-widget.js
|
|
533
|
+
function installChatWidget() {
|
|
534
|
+
const chat = installChat(), floating = installFloatButton();
|
|
535
|
+
return createAPI("ChatWidget", (s) => {
|
|
536
|
+
s.root.className = "blu-chat-widget";
|
|
537
|
+
s.panel = attr(node("section", "blu-chat-widget__panel"), "role", "dialog");
|
|
538
|
+
s.panel.id = s.uid + "-panel";
|
|
539
|
+
attr(s.panel, "aria-modal", "false");
|
|
540
|
+
const top = node("header", "blu-chat-widget__header");
|
|
541
|
+
s.title = node("h2");
|
|
542
|
+
const commands = node("div");
|
|
543
|
+
s.expand = button("", () => setExpanded(s, !s.expanded));
|
|
544
|
+
s.expand.append(icon("Expand"));
|
|
545
|
+
attr(s.expand, "aria-label", "Expand chat");
|
|
546
|
+
s.close = button("", () => setOpen(s, false, "Close"));
|
|
547
|
+
s.close.append(icon("Close"));
|
|
548
|
+
attr(s.close, "aria-label", "Minimize chat");
|
|
549
|
+
commands.append(s.expand, s.close);
|
|
550
|
+
top.append(s.title, commands);
|
|
551
|
+
s.chatHost = node("div", "blu-chat-widget__content");
|
|
552
|
+
s.chatHost.id = s.uid + "-chat";
|
|
553
|
+
s.floatHost = node("div");
|
|
554
|
+
s.floatHost.id = s.uid + "-float";
|
|
555
|
+
s.panel.append(top, s.chatHost);
|
|
556
|
+
s.root.append(s.panel, s.floatHost);
|
|
557
|
+
s.root.addEventListener("keydown", (e) => {
|
|
558
|
+
if (e.key === "Escape" && s.open) {
|
|
559
|
+
e.preventDefault();
|
|
560
|
+
e.stopPropagation();
|
|
561
|
+
setOpen(s, false, "Escape");
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
s.dispose = () => {
|
|
565
|
+
chat.destroy(s.uid + "-chat");
|
|
566
|
+
floating.destroy(s.uid + "-float");
|
|
567
|
+
};
|
|
568
|
+
}, (s) => {
|
|
569
|
+
const o = s.options;
|
|
570
|
+
if (s.open === void 0 || o.IsOpen !== s.openInput) {
|
|
571
|
+
s.openInput = o.IsOpen;
|
|
572
|
+
s.open = !!o.IsOpen;
|
|
573
|
+
}
|
|
574
|
+
if (o.IsExpanded !== s.expandedInput) {
|
|
575
|
+
s.expandedInput = o.IsExpanded;
|
|
576
|
+
s.expanded = !!o.IsExpanded;
|
|
577
|
+
}
|
|
578
|
+
const target = o.Position === "Container" ? s.host : document.body;
|
|
579
|
+
if (s.root.parentNode !== target) target.append(s.root);
|
|
580
|
+
s.root.dataset.position = o.Position === "Container" ? "Container" : "Viewport";
|
|
581
|
+
s.root.dataset.placement = o.Placement === "BottomLeft" ? "BottomLeft" : "BottomRight";
|
|
582
|
+
s.root.dataset.animate = String(o.Animate !== false);
|
|
583
|
+
s.root.style.setProperty("--blu-widget-offset", Math.max(8, Math.min(160, Number(o.Offset) || 24)) + "px");
|
|
584
|
+
s.title.textContent = o.Title || "Assistant";
|
|
585
|
+
attr(s.panel, "aria-label", o.Title || "Assistant");
|
|
586
|
+
const callbacks = {};
|
|
587
|
+
for (const n of ["Send", "Stop", "Retry", "Copy", "Error"]) callbacks[n] = (...args) => emit(s, n, ...args);
|
|
588
|
+
chat.sync(s.chatHost.id, { ...o, ShowHeader: false }, callbacks, s.uid + "-chat");
|
|
589
|
+
floating.sync(s.floatHost.id, { Label: s.open ? "Minimize chat" : o.LauncherLabel || "Open chat", Icon: s.open ? "Close" : "Chat", BadgeCount: s.open ? 0 : o.UnreadCount, Position: "Container", Placement: o.Placement, Offset: 8, Animate: o.Animate, Color: o.Color }, { Click: () => setOpen(s, !s.open, "Launcher"), Error: (e) => emit(s, "Error", e) }, s.uid + "-float");
|
|
590
|
+
const launcher = s.floatHost.querySelector("button");
|
|
591
|
+
attr(launcher, "aria-expanded", !!s.open);
|
|
592
|
+
attr(launcher, "aria-controls", s.panel.id);
|
|
593
|
+
attr(launcher, "aria-haspopup", "dialog");
|
|
594
|
+
render(s);
|
|
595
|
+
});
|
|
596
|
+
function setOpen(s, open, reason) {
|
|
597
|
+
s.open = open;
|
|
598
|
+
render(s);
|
|
599
|
+
emit(s, "OpenChanged", open, reason);
|
|
600
|
+
}
|
|
601
|
+
function setExpanded(s, expanded) {
|
|
602
|
+
s.expanded = expanded;
|
|
603
|
+
render(s);
|
|
604
|
+
emit(s, "ExpandedChanged", expanded);
|
|
605
|
+
}
|
|
606
|
+
function render(s) {
|
|
607
|
+
const changed = s.lastOpen !== s.open;
|
|
608
|
+
s.lastOpen = s.open;
|
|
609
|
+
s.root.dataset.open = String(!!s.open);
|
|
610
|
+
s.root.dataset.expanded = String(!!s.expanded);
|
|
611
|
+
s.panel.inert = !s.open;
|
|
612
|
+
attr(s.panel, "aria-hidden", !s.open);
|
|
613
|
+
attr(s.expand, "aria-label", s.expanded ? "Restore chat size" : "Expand chat");
|
|
614
|
+
attr(s.expand, "aria-pressed", !!s.expanded);
|
|
615
|
+
floating.sync(s.floatHost.id, { Label: s.open ? "Minimize chat" : s.options.LauncherLabel || "Open chat", Icon: s.open ? "Close" : "Chat", BadgeCount: s.open ? 0 : s.options.UnreadCount, Position: "Container", Placement: s.options.Placement, Offset: 8, Animate: s.options.Animate, Color: s.options.Color }, { Click: () => setOpen(s, !s.open, "Launcher"), Error: (e) => emit(s, "Error", e) }, s.uid + "-float");
|
|
616
|
+
const launcher = s.floatHost.querySelector("button");
|
|
617
|
+
if (launcher) {
|
|
618
|
+
attr(launcher, "aria-expanded", !!s.open);
|
|
619
|
+
attr(launcher, "aria-controls", s.panel.id);
|
|
620
|
+
attr(launcher, "aria-haspopup", "dialog");
|
|
621
|
+
}
|
|
622
|
+
if (changed && s.open) {
|
|
623
|
+
const input = s.chatHost.querySelector("textarea");
|
|
624
|
+
(input && !input.disabled ? input : s.close).focus({ preventScroll: true });
|
|
625
|
+
} else if (changed && s.open === false && s.panel.contains(document.activeElement)) launcher?.focus({ preventScroll: true });
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
export {
|
|
629
|
+
installChatWidget
|
|
630
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function installChat():any;
|