@keyfunc/keybricks-ds 2.6.0 → 2.8.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/DEPLOY.md +3 -3
- package/DESIGN.md +21 -5
- package/INTEGRATION.md +35 -4
- package/_adherence.oxlintrc.json +56 -11
- package/_ds_bundle.js +2153 -216
- package/_scripts/build-index.mjs +1 -1
- package/_src/icon-index.js +1 -1
- package/{components/feedback → _vue-services}/MESSAGE_SERVICES.md +2 -2
- package/_vue-services/_internal/MessageBoxView.vue +150 -0
- package/{components/feedback → _vue-services}/_internal/service-utils.js +0 -12
- package/_vue-services/message.js +87 -0
- package/assets/icons/icon-index.json +1 -1
- package/changelog.js +21 -2
- package/components/_cards/accordion.card.html +1 -1
- package/components/_cards/action-chip.card.html +1 -1
- package/components/_cards/activity.card.html +1 -1
- package/components/_cards/alert.card.html +1 -1
- package/components/_cards/app-chrome.card.html +1 -1
- package/components/_cards/banner.card.html +1 -1
- package/components/_cards/breadcrumb.card.html +1 -1
- package/components/_cards/button-1-base.card.html +5 -2
- package/components/_cards/button-2-states.card.html +5 -5
- package/components/_cards/button-3-sizes-icons.card.html +2 -2
- package/components/_cards/button-4-group.card.html +2 -2
- package/components/_cards/button-5-ai.card.html +34 -0
- package/components/_cards/canvas-zoom-controls.card.html +1 -1
- package/components/_cards/cards-indicators.card.html +1 -1
- package/components/_cards/charts-1-sparkline.card.html +1 -1
- package/components/_cards/charts-10-gauge.card.html +1 -1
- package/components/_cards/charts-11-funnel.card.html +1 -1
- package/components/_cards/charts-12-treemap.card.html +1 -1
- package/components/_cards/charts-14-radar.card.html +1 -1
- package/components/_cards/charts-15-distribution.card.html +1 -1
- package/components/_cards/charts-16-pareto.card.html +1 -1
- package/components/_cards/charts-17-candlestick.card.html +1 -1
- package/components/_cards/charts-18-sankey.card.html +1 -1
- package/components/_cards/charts-19-chord.card.html +1 -1
- package/components/_cards/charts-2-line.card.html +1 -1
- package/components/_cards/charts-20-sunburst.card.html +1 -1
- package/components/_cards/charts-21-worldmap.card.html +1 -1
- package/components/_cards/charts-22-gantt.card.html +1 -1
- package/components/_cards/charts-23-bar3d.card.html +1 -1
- package/components/_cards/charts-24-pie3d.card.html +1 -1
- package/components/_cards/charts-25-surface3d.card.html +1 -1
- package/components/_cards/charts-26-scatter3d.card.html +1 -1
- package/components/_cards/charts-27-ribbon3d.card.html +1 -1
- package/components/_cards/charts-3-bar.card.html +1 -1
- package/components/_cards/charts-4-barlist.card.html +1 -1
- package/components/_cards/charts-5-donut.card.html +1 -1
- package/components/_cards/charts-6-scatter.card.html +1 -1
- package/components/_cards/charts-7-heatmap.card.html +1 -1
- package/components/_cards/charts-8-waterfall.card.html +1 -1
- package/components/_cards/charts-9-bullet.card.html +1 -1
- package/components/_cards/charts-99-fullpage.card.html +1 -1
- package/components/_cards/checkbox.card.html +1 -1
- package/components/_cards/codeblock.card.html +1 -1
- package/components/_cards/combobox.card.html +1 -1
- package/components/_cards/context-menu.card.html +1 -1
- package/components/_cards/date-picker.card.html +1 -1
- package/components/_cards/diffvalue.card.html +1 -1
- package/components/_cards/divider.card.html +1 -1
- package/components/_cards/drawer.card.html +1 -1
- package/components/_cards/dropdown-menu.card.html +1 -1
- package/components/_cards/dropzone.card.html +1 -1
- package/components/_cards/empty-state.card.html +1 -1
- package/components/_cards/filter-bar.card.html +1 -1
- package/components/_cards/icon-button.card.html +1 -1
- package/components/_cards/icons-0-usage.card.html +2 -2
- package/components/_cards/icons-1-core.card.html +1 -1
- package/components/_cards/icons-2-feather.card.html +1 -1
- package/components/_cards/icons-2b-lucide.card.html +1 -1
- package/components/_cards/icons-3-unicons.card.html +1 -1
- package/components/_cards/icons-4-datasource.card.html +1 -1
- package/components/_cards/input.card.html +1 -1
- package/components/_cards/kbd.card.html +5 -7
- package/components/_cards/keyvalue.card.html +1 -1
- package/components/_cards/listrow.card.html +1 -1
- package/components/_cards/loading.card.html +1 -1
- package/components/_cards/log-viewer.card.html +1 -1
- package/components/_cards/modal.card.html +8 -2
- package/components/_cards/multi-select.card.html +1 -1
- package/components/_cards/number-stepper.card.html +1 -1
- package/components/_cards/pagination.card.html +1 -1
- package/components/_cards/people.card.html +1 -1
- package/components/_cards/pipeline-node.card.html +1 -1
- package/components/_cards/pipeline-palette.card.html +1 -1
- package/components/_cards/radio.card.html +1 -1
- package/components/_cards/relative-time-picker.card.html +1 -1
- package/components/_cards/search-global.card.html +72 -0
- package/components/_cards/search.card.html +1 -1
- package/components/_cards/segmented-control.card.html +1 -1
- package/components/_cards/select.card.html +1 -1
- package/components/_cards/slider.card.html +1 -1
- package/components/_cards/smart-table.card.html +1 -1
- package/components/_cards/spreadsheet.card.html +1 -1
- package/components/_cards/stepper.card.html +1 -1
- package/components/_cards/table.card.html +10 -1
- package/components/_cards/tabs.card.html +1 -1
- package/components/_cards/tag.card.html +1 -1
- package/components/_cards/textarea.card.html +1 -1
- package/components/_cards/timeline.card.html +1 -1
- package/components/_cards/toast.card.html +11 -1
- package/components/_cards/toggles.card.html +1 -1
- package/components/_cards/tooltip.card.html +1 -1
- package/components/_cards/tree.card.html +22 -1
- package/components/_vue/index.mjs +2 -0
- package/components/buttons/Button.d.ts +14 -5
- package/components/buttons/Button.jsx +45 -8
- package/components/buttons/Button.vue +40 -38
- package/components/buttons/Button.vue.d.ts +4 -1
- package/components/buttons/ai-button.js +54 -0
- package/components/buttons/buttons.prompt.md +7 -2
- package/components/data/Table.d.ts +5 -0
- package/components/data/Table.jsx +10 -5
- package/components/data/Table.vue +9 -3
- package/components/data/data.prompt.md +2 -0
- package/components/data/row-open.js +13 -0
- package/components/display/Kbd.d.ts +3 -1
- package/components/display/Kbd.jsx +8 -3
- package/components/display/Kbd.vue +7 -3
- package/components/display/display.prompt.md +3 -1
- package/components/feedback/Modal.d.ts +65 -7
- package/components/feedback/Modal.jsx +52 -22
- package/components/feedback/Modal.vue +24 -6
- package/components/feedback/Toast.vue +7 -7
- package/components/feedback/ToastStack.vue +37 -4
- package/components/feedback/feedback.prompt.md +6 -0
- package/components/feedback/modal-behavior.js +50 -0
- package/components/forms/GlobalSearch.d.ts +83 -0
- package/components/forms/GlobalSearch.jsx +172 -0
- package/components/forms/GlobalSearch.vue +161 -0
- package/components/forms/forms.prompt.md +7 -0
- package/components/forms/global-search.js +161 -0
- package/components/icons/Icon.d.ts +2 -0
- package/components/icons/Icon.jsx +14 -6
- package/components/icons/Icon.vue +11 -4
- package/components/icons/icon-paths.js +4 -2
- package/components/index.d.ts +1 -0
- package/components/index.js +1 -0
- package/components/navigation/TopBar.d.ts +9 -3
- package/components/navigation/TopBar.jsx +5 -7
- package/components/navigation/TopBar.vue +5 -6
- package/components/navigation/Tree.d.ts +5 -1
- package/components/navigation/Tree.jsx +9 -7
- package/components/navigation/Tree.vue +7 -6
- package/components/navigation/navigation.prompt.md +2 -0
- package/covers.js +4 -2
- package/gallery.html +1 -1
- package/guidelines/brand-logo.html +1 -1
- package/guidelines/colors-schemes.html +1 -1
- package/guidelines/colors-transparency.html +1 -1
- package/guidelines/foundations-borders.html +1 -1
- package/guidelines/foundations-chrome.html +1 -1
- package/guidelines/foundations-motion.html +1 -1
- package/guidelines/foundations-size-tiers.html +1 -1
- package/guidelines/foundations-spacing.html +1 -1
- package/guidelines/interaction-states.html +1 -1
- package/guidelines/type-extended.html +1 -1
- package/guidelines/type-mono.html +1 -1
- package/guidelines/type-scale.html +1 -1
- package/guidelines/type-weights.html +1 -1
- package/index.html +10 -10
- package/package.json +7 -6
- package/readme.md +4 -4
- package/readme.zh-CN.md +4 -4
- package/site-nav.js +1 -1
- package/styles.css +1 -0
- package/tokens/ai.css +17 -0
- package/tokens/colors.css +1 -1
- package/tokens/tokens.d.ts +28 -0
- package/tokens/tokens.js +47 -5
- package/tokens/tokens.json +123 -5
- package/components/feedback/_internal/MessageBoxView.vue +0 -237
- package/components/feedback/_internal/MessageView.vue +0 -73
- package/components/feedback/message.js +0 -68
- /package/{components/feedback → _vue-services}/message-box.d.ts +0 -0
- /package/{components/feedback → _vue-services}/message-box.js +0 -0
- /package/{components/feedback → _vue-services}/message.d.ts +0 -0
package/_ds_bundle.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @ds-bundle: {"format":4,"namespace":"KeybricksDesignSystem_71231a","components":[{"name":"ActionChip","sourcePath":"components/buttons/ActionChip.jsx"},{"name":"Button","sourcePath":"components/buttons/Button.jsx"},{"name":"ButtonGroup","sourcePath":"components/buttons/Button.jsx"},{"name":"IconButton","sourcePath":"components/buttons/IconButton.jsx"},{"name":"Bar3D","sourcePath":"components/charts/Bar3D.jsx"},{"name":"BarChart","sourcePath":"components/charts/BarChart.jsx"},{"name":"BarList","sourcePath":"components/charts/BarList.jsx"},{"name":"BoxPlot","sourcePath":"components/charts/BoxPlot.jsx"},{"name":"BulletChart","sourcePath":"components/charts/BulletChart.jsx"},{"name":"CandlestickChart","sourcePath":"components/charts/CandlestickChart.jsx"},{"name":"ChartLegend","sourcePath":"components/charts/ChartKit.jsx"},{"name":"ChartTooltip","sourcePath":"components/charts/ChartKit.jsx"},{"name":"PlotGrid","sourcePath":"components/charts/ChartKit.jsx"},{"name":"XLabels","sourcePath":"components/charts/ChartKit.jsx"},{"name":"ChartKit","sourcePath":"components/charts/ChartKit.jsx"},{"name":"ChordChart","sourcePath":"components/charts/ChordChart.jsx"},{"name":"DonutChart","sourcePath":"components/charts/DonutChart.jsx"},{"name":"FunnelChart","sourcePath":"components/charts/FunnelChart.jsx"},{"name":"GanttChart","sourcePath":"components/charts/GanttChart.jsx"},{"name":"GaugeChart","sourcePath":"components/charts/GaugeChart.jsx"},{"name":"HeatmapChart","sourcePath":"components/charts/HeatmapChart.jsx"},{"name":"Histogram","sourcePath":"components/charts/Histogram.jsx"},{"name":"LineChart","sourcePath":"components/charts/LineChart.jsx"},{"name":"ParetoChart","sourcePath":"components/charts/ParetoChart.jsx"},{"name":"Pie3D","sourcePath":"components/charts/Pie3D.jsx"},{"name":"RadarChart","sourcePath":"components/charts/RadarChart.jsx"},{"name":"Ribbon3D","sourcePath":"components/charts/Ribbon3D.jsx"},{"name":"SankeyChart","sourcePath":"components/charts/SankeyChart.jsx"},{"name":"Scatter3D","sourcePath":"components/charts/Scatter3D.jsx"},{"name":"ScatterChart","sourcePath":"components/charts/ScatterChart.jsx"},{"name":"Sparkline","sourcePath":"components/charts/Sparkline.jsx"},{"name":"SunburstChart","sourcePath":"components/charts/SunburstChart.jsx"},{"name":"Surface3D","sourcePath":"components/charts/Surface3D.jsx"},{"name":"TreemapChart","sourcePath":"components/charts/TreemapChart.jsx"},{"name":"WaterfallChart","sourcePath":"components/charts/WaterfallChart.jsx"},{"name":"WorldMap","sourcePath":"components/charts/WorldMap.jsx"},{"name":"SERIES","sourcePath":"components/charts/chart-geometry.js"},{"name":"CodeBlock","sourcePath":"components/data/CodeBlock.jsx"},{"name":"DiffValue","sourcePath":"components/data/DiffValue.jsx"},{"name":"FilterBar","sourcePath":"components/data/FilterBar.jsx"},{"name":"KeyValue","sourcePath":"components/data/KeyValue.jsx"},{"name":"KeyValueList","sourcePath":"components/data/KeyValue.jsx"},{"name":"ListRow","sourcePath":"components/data/ListRow.jsx"},{"name":"Pagination","sourcePath":"components/data/Pagination.jsx"},{"name":"SmartTable","sourcePath":"components/data/SmartTable.jsx"},{"name":"Spreadsheet","sourcePath":"components/data/Spreadsheet.jsx"},{"name":"Table","sourcePath":"components/data/Table.jsx"},{"name":"Avatar","sourcePath":"components/display/Avatar.jsx"},{"name":"AvatarGroup","sourcePath":"components/display/Avatar.jsx"},{"name":"StatusBadge","sourcePath":"components/display/Badge.jsx"},{"name":"Badge","sourcePath":"components/display/Badge.jsx"},{"name":"IconTile","sourcePath":"components/display/Badge.jsx"},{"name":"Card","sourcePath":"components/display/Card.jsx"},{"name":"StatCard","sourcePath":"components/display/Card.jsx"},{"name":"Divider","sourcePath":"components/display/Divider.jsx"},{"name":"Kbd","sourcePath":"components/display/Kbd.jsx"},{"name":"ProgressBar","sourcePath":"components/display/ProgressBar.jsx"},{"name":"Donut","sourcePath":"components/display/ProgressBar.jsx"},{"name":"AreaChart","sourcePath":"components/display/ProgressBar.jsx"},{"name":"MiniBars","sourcePath":"components/display/ProgressBar.jsx"},{"name":"Tag","sourcePath":"components/display/Tag.jsx"},{"name":"Accordion","sourcePath":"components/feedback/Accordion.jsx"},{"name":"ActivityItem","sourcePath":"components/feedback/ActivityItem.jsx"},{"name":"DotActivity","sourcePath":"components/feedback/ActivityItem.jsx"},{"name":"LogViewer","sourcePath":"components/feedback/ActivityItem.jsx"},{"name":"Alert","sourcePath":"components/feedback/Alert.jsx"},{"name":"EmptyState","sourcePath":"components/feedback/Alert.jsx"},{"name":"Skeleton","sourcePath":"components/feedback/Alert.jsx"},{"name":"Spinner","sourcePath":"components/feedback/Alert.jsx"},{"name":"Banner","sourcePath":"components/feedback/Banner.jsx"},{"name":"ContextMenu","sourcePath":"components/feedback/ContextMenu.jsx"},{"name":"Drawer","sourcePath":"components/feedback/Drawer.jsx"},{"name":"Menu","sourcePath":"components/feedback/Menu.jsx"},{"name":"Tooltip","sourcePath":"components/feedback/Modal.jsx"},{"name":"Modal","sourcePath":"components/feedback/Modal.jsx"},{"name":"Toast","sourcePath":"components/feedback/Modal.jsx"},{"name":"ToastStack","sourcePath":"components/feedback/Modal.jsx"},{"name":"Stepper","sourcePath":"components/feedback/Stepper.jsx"},{"name":"Timeline","sourcePath":"components/feedback/Timeline.jsx"},{"name":"Checkbox","sourcePath":"components/forms/Checkbox.jsx"},{"name":"Combobox","sourcePath":"components/forms/Combobox.jsx"},{"name":"DatePicker","sourcePath":"components/forms/DatePicker.jsx"},{"name":"Dropzone","sourcePath":"components/forms/Dropzone.jsx"},{"name":"Field","sourcePath":"components/forms/Field.jsx"},{"name":"Input","sourcePath":"components/forms/Input.jsx"},{"name":"Textarea","sourcePath":"components/forms/Input.jsx"},{"name":"MultiSelect","sourcePath":"components/forms/MultiSelect.jsx"},{"name":"NumberStepper","sourcePath":"components/forms/NumberStepper.jsx"},{"name":"Radio","sourcePath":"components/forms/Radio.jsx"},{"name":"RadioGroup","sourcePath":"components/forms/Radio.jsx"},{"name":"RelativeTimePicker","sourcePath":"components/forms/RelativeTimePicker.jsx"},{"name":"SearchInput","sourcePath":"components/forms/SearchInput.jsx"},{"name":"Select","sourcePath":"components/forms/Select.jsx"},{"name":"Slider","sourcePath":"components/forms/Slider.jsx"},{"name":"Switch","sourcePath":"components/forms/Switch.jsx"},{"name":"RELATIVE_TIME_UNITS","sourcePath":"components/forms/relative-time.js"},{"name":"RELATIVE_TIME_LABELS","sourcePath":"components/forms/relative-time.js"},{"name":"ICON_PATHS","sourcePath":"components/icons/Icon.jsx"},{"name":"Icon","sourcePath":"components/icons/Icon.jsx"},{"name":"LUCIDE_VERSION","sourcePath":"components/icons/lucide-loader.js"},{"name":"Lucide","sourcePath":"components/icons/Lucide.jsx"},{"name":"Unicon","sourcePath":"components/icons/Unicon.jsx"},{"name":"FEATHER_PATHS","sourcePath":"components/icons/feather-paths.js"},{"name":"VUE_ICON_PATHS","sourcePath":"components/icons/icon-paths.js"},{"name":"DataTable","sourcePath":"components/index.js"},{"name":"Breadcrumb","sourcePath":"components/navigation/Breadcrumb.jsx"},{"name":"ThemeToggle","sourcePath":"components/navigation/Breadcrumb.jsx"},{"name":"DocTree","sourcePath":"components/navigation/DocTree.jsx"},{"name":"SidePanel","sourcePath":"components/navigation/SidePanel.jsx"},{"name":"KEYBRICKS_MGMT","sourcePath":"components/navigation/nav-model.js"},{"name":"KEYBRICKS_NAV","sourcePath":"components/navigation/nav-model.js"},{"name":"KEYBRICKS_NAV_FOOTER","sourcePath":"components/navigation/nav-model.js"},{"name":"SIDEBAR_COLORS","sourcePath":"components/navigation/chrome-tones.js"},{"name":"Sidebar","sourcePath":"components/navigation/Sidebar.jsx"},{"name":"PageHeading","sourcePath":"components/navigation/TopBar.jsx"},{"name":"PageToolbar","sourcePath":"components/navigation/TopBar.jsx"},{"name":"THEME_OPTIONS","sourcePath":"components/navigation/TopBar.jsx"},{"name":"TopBar","sourcePath":"components/navigation/TopBar.jsx"},{"name":"UserMenu","sourcePath":"components/navigation/TopBar.jsx"},{"name":"Tree","sourcePath":"components/navigation/Tree.jsx"},{"name":"ConfigPanel","sourcePath":"components/pipeline/ConfigPanel.jsx"},{"name":"DataPreview","sourcePath":"components/pipeline/DataPreview.jsx"},{"name":"NodeCard","sourcePath":"components/pipeline/NodeCard.jsx"},{"name":"Port","sourcePath":"components/pipeline/NodeCard.jsx"},{"name":"PortLabel","sourcePath":"components/pipeline/NodeCard.jsx"},{"name":"PIPELINE_CATALOG","sourcePath":"components/pipeline/pipeline-catalog.js"},{"name":"PaletteItem","sourcePath":"components/pipeline/PalettePanel.jsx"},{"name":"PaletteListItem","sourcePath":"components/pipeline/PalettePanel.jsx"},{"name":"PalettePanel","sourcePath":"components/pipeline/PalettePanel.jsx"},{"name":"PipelineCanvas","sourcePath":"components/pipeline/PipelineCanvas.jsx"},{"name":"ZoomControls","sourcePath":"components/pipeline/ZoomControls.jsx"},{"name":"SegmentedControl","sourcePath":"components/tabs/SegmentedControl.jsx"},{"name":"CountBadge","sourcePath":"components/tabs/Tabs.jsx"},{"name":"PanelTabs","sourcePath":"components/tabs/Tabs.jsx"},{"name":"PillTabs","sourcePath":"components/tabs/Tabs.jsx"},{"name":"Tabs","sourcePath":"components/tabs/Tabs.jsx"},{"name":"ViewToggle","sourcePath":"components/tabs/ViewToggle.jsx"}],"sourceHashes":{"changelog.js":"66f1fd209af8","components/_shared/card-kit.js":"d1a34446784f","components/_shared/frame-theme.js":"bf16c8945df0","components/_shared/svg-download.js":"9d62db55383f","components/_shared/view-source.js":"fab1363c9ec6","components/buttons/ActionChip.jsx":"14bc07f40ce8","components/buttons/Button.jsx":"6110e7a4c4c7","components/buttons/IconButton.jsx":"7dc6876baab5","components/charts/Bar3D.jsx":"831825885981","components/charts/BarChart.jsx":"233a0bc11a9b","components/charts/BarList.jsx":"125a1dbb53ed","components/charts/BoxPlot.jsx":"8248a9768508","components/charts/BulletChart.jsx":"f72c2a568232","components/charts/CandlestickChart.jsx":"06c056166032","components/charts/ChartKit.jsx":"2f186e247fd2","components/charts/ChordChart.jsx":"f637257e4117","components/charts/DonutChart.jsx":"3b941dbb9b59","components/charts/FunnelChart.jsx":"4e0905360b64","components/charts/GanttChart.jsx":"385f02db3353","components/charts/GaugeChart.jsx":"675e34482ee7","components/charts/HeatmapChart.jsx":"563ed883a71b","components/charts/Histogram.jsx":"2cafc5676c9c","components/charts/LineChart.jsx":"4b650646e6d5","components/charts/ParetoChart.jsx":"0f7462fd7b7d","components/charts/Pie3D.jsx":"a712524cd12c","components/charts/RadarChart.jsx":"2c5d2186a949","components/charts/Ribbon3D.jsx":"af1793d05d39","components/charts/SankeyChart.jsx":"954d95f4d065","components/charts/Scatter3D.jsx":"ef50d4381338","components/charts/ScatterChart.jsx":"77c05131ec98","components/charts/Sparkline.jsx":"9d8f3fa12642","components/charts/SunburstChart.jsx":"125f214d8795","components/charts/Surface3D.jsx":"aee8e4b7ee78","components/charts/TreemapChart.jsx":"dda7f388e540","components/charts/WaterfallChart.jsx":"5a330bd1827c","components/charts/WorldMap.jsx":"606387955701","components/charts/chart-3d.js":"3d737da91401","components/charts/chart-geometry.js":"a12030d8657d","components/data/CodeBlock.jsx":"6e690f47fc42","components/data/DiffValue.jsx":"c935ef5dd50b","components/data/FilterBar.jsx":"39f18062ca6f","components/data/KeyValue.jsx":"9bdc389e0d7e","components/data/ListRow.jsx":"e578944ee86a","components/data/Pagination.jsx":"c3bbaae7dc5a","components/data/SmartTable.jsx":"3c8becbc7196","components/data/Spreadsheet.jsx":"a77fd88f3569","components/data/Table.jsx":"e025e97ecf21","components/display/Avatar.jsx":"977b19df247c","components/display/Badge.jsx":"e88da52fcfc4","components/display/Card.jsx":"8a7b8364a215","components/display/Divider.jsx":"bb429e2d0956","components/display/Kbd.jsx":"43a689a386eb","components/display/ProgressBar.jsx":"fdde3c872e07","components/display/Tag.jsx":"9273edfc3e38","components/feedback/Accordion.jsx":"73c086d09ba4","components/feedback/ActivityItem.jsx":"0adc1a58c612","components/feedback/Alert.jsx":"f6de26206dae","components/feedback/Banner.jsx":"610a45f96ecd","components/feedback/ContextMenu.jsx":"dfdde5683263","components/feedback/Drawer.jsx":"f19acf9e3a00","components/feedback/Menu.jsx":"6e92100d3d2b","components/feedback/Modal.jsx":"d7e8425549b7","components/feedback/Stepper.jsx":"a0cb5b659998","components/feedback/Timeline.jsx":"2b8c0f37503e","components/forms/Checkbox.jsx":"db9c8ff69653","components/forms/Combobox.jsx":"8ec375433182","components/forms/DatePicker.jsx":"e7366c603a9f","components/forms/Dropzone.jsx":"5432a672a429","components/forms/Field.jsx":"8e4649e1a18b","components/forms/Input.jsx":"95922d854a24","components/forms/MultiSelect.jsx":"14636d36331b","components/forms/NumberStepper.jsx":"6e0c940000fe","components/forms/Radio.jsx":"96e36a9b1c79","components/forms/RelativeTimePicker.jsx":"23755d41a8c1","components/forms/SearchInput.jsx":"40dae28d378f","components/forms/Select.jsx":"870c20ebcd67","components/forms/Slider.jsx":"ebd21a287cc3","components/forms/Switch.jsx":"e1303512a946","components/forms/input-base.js":"988c002d8357","components/forms/relative-time.js":"64155d3bcdcf","components/icons/Icon.jsx":"e1aaa4319592","components/icons/Lucide.jsx":"42c8091d53f5","components/icons/Unicon.jsx":"03683a8eb3d3","components/icons/feather-paths.js":"f8ca847bbdf3","components/icons/icon-paths.js":"442cdd475938","components/icons/lucide-loader.js":"b2fe23ee92fc","components/index.js":"80cfb8d13940","components/navigation/Breadcrumb.jsx":"26b271b8d1dd","components/navigation/DocTree.jsx":"02a7d753e159","components/navigation/SidePanel.jsx":"4691ef93e84e","components/navigation/Sidebar.jsx":"6ce469c00f26","components/navigation/TopBar.jsx":"1a092707599a","components/navigation/Tree.jsx":"72ac15ee39e6","components/navigation/chrome-tones.js":"073b9df6aef5","components/navigation/nav-model.js":"e091dd62900c","components/navigation/theme-store.js":"c05c61fb0bd2","components/pipeline/ConfigPanel.jsx":"8cf8677f4472","components/pipeline/DataPreview.jsx":"7aaf081fcd16","components/pipeline/NodeCard.jsx":"357042c92033","components/pipeline/PalettePanel.jsx":"1d28f2d3abac","components/pipeline/PipelineCanvas.jsx":"09eb8b7d7f61","components/pipeline/ZoomControls.jsx":"7bd9fa5c4c9b","components/pipeline/pipeline-catalog.js":"9a3250315e88","components/pipeline/port-skin.js":"9bdd304628a6","components/px.js":"4ab7eb225e9d","components/tabs/SegmentedControl.jsx":"ae08c2ef8a1e","components/tabs/Tabs.jsx":"d92fbada1ef2","components/tabs/ViewToggle.jsx":"3a77b9900151","covers.js":"8360f1081144","site-nav.js":"6c8fcaecf617","tokens/theme.js":"1848ef09eb46","tokens/tokens.js":"22f620a59bf4"},"inlinedExternals":[],"unexposedExports":[{"name":"applyStoredTheme","sourcePath":"components/navigation/theme-store.js"},{"name":"arcPath","sourcePath":"components/charts/chart-geometry.js"},{"name":"areaPath","sourcePath":"components/charts/chart-geometry.js"},{"name":"changeRelativeAmount","sourcePath":"components/forms/relative-time.js"},{"name":"changeRelativeUnit","sourcePath":"components/forms/relative-time.js"},{"name":"chord","sourcePath":"components/charts/chart-geometry.js"},{"name":"chordRibbon","sourcePath":"components/charts/chart-geometry.js"},{"name":"chromeTone","sourcePath":"components/navigation/chrome-tones.js"},{"name":"closeToBaseline","sourcePath":"components/charts/chart-geometry.js"},{"name":"colName","sourcePath":"components/data/Spreadsheet.jsx"},{"name":"cssVar","sourcePath":"tokens/tokens.js"},{"name":"cuboidFaces","sourcePath":"components/charts/chart-3d.js"},{"name":"curvePath","sourcePath":"components/charts/chart-geometry.js"},{"name":"dark","sourcePath":"tokens/tokens.js"},{"name":"dragRotate","sourcePath":"components/charts/chart-3d.js"},{"name":"extent","sourcePath":"components/charts/chart-geometry.js"},{"name":"faceDepth","sourcePath":"components/charts/chart-3d.js"},{"name":"facePath","sourcePath":"components/charts/chart-3d.js"},{"name":"fmtNum","sourcePath":"components/charts/chart-geometry.js"},{"name":"heatColor","sourcePath":"components/charts/chart-3d.js"},{"name":"heatStep","sourcePath":"components/charts/chart-geometry.js"},{"name":"inputBase","sourcePath":"components/forms/input-base.js"},{"name":"light","sourcePath":"tokens/tokens.js"},{"name":"lightOf","sourcePath":"components/charts/chart-3d.js"},{"name":"linePath","sourcePath":"components/charts/chart-geometry.js"},{"name":"loadLucide","sourcePath":"components/icons/lucide-loader.js"},{"name":"lucideBody","sourcePath":"components/icons/lucide-loader.js"},{"name":"lucideReady","sourcePath":"components/icons/lucide-loader.js"},{"name":"makeProj","sourcePath":"components/charts/chart-3d.js"},{"name":"niceTicks","sourcePath":"components/charts/chart-geometry.js"},{"name":"normalizeRelativeTime","sourcePath":"components/forms/relative-time.js"},{"name":"onLucideReady","sourcePath":"components/icons/lucide-loader.js"},{"name":"polar","sourcePath":"components/charts/chart-geometry.js"},{"name":"portSkin","sourcePath":"components/pipeline/port-skin.js"},{"name":"px","sourcePath":"components/px.js"},{"name":"quantize","sourcePath":"components/charts/chart-geometry.js"},{"name":"relativeTimePosition","sourcePath":"components/forms/relative-time.js"},{"name":"relativeTimeText","sourcePath":"components/forms/relative-time.js"},{"name":"relativeUnitLabel","sourcePath":"components/forms/relative-time.js"},{"name":"resolveRelativeTime","sourcePath":"components/forms/relative-time.js"},{"name":"rotate3","sourcePath":"components/charts/chart-3d.js"},{"name":"sankey","sourcePath":"components/charts/chart-geometry.js"},{"name":"scaleLin","sourcePath":"components/charts/chart-geometry.js"},{"name":"seriesColor","sourcePath":"components/charts/chart-geometry.js"},{"name":"setLucideSource","sourcePath":"components/icons/lucide-loader.js"},{"name":"shade","sourcePath":"components/charts/chart-3d.js"},{"name":"shapePath","sourcePath":"components/charts/chart-geometry.js"},{"name":"stack","sourcePath":"components/charts/chart-geometry.js"},{"name":"stepPath","sourcePath":"components/charts/chart-geometry.js"},{"name":"summarize","sourcePath":"components/charts/BoxPlot.jsx"},{"name":"thinLabels","sourcePath":"components/charts/ChartKit.jsx"},{"name":"tokenNames","sourcePath":"tokens/tokens.js"},{"name":"treemap","sourcePath":"components/charts/chart-geometry.js"},{"name":"waterfall","sourcePath":"components/charts/chart-geometry.js"},{"name":"wrapStyle","sourcePath":"components/charts/ChartKit.jsx"}]} */
|
|
1
|
+
/* @ds-bundle: {"format":4,"namespace":"KeybricksDesignSystem_71231a","components":[{"name":"ActionChip","sourcePath":"components/buttons/ActionChip.jsx"},{"name":"Button","sourcePath":"components/buttons/Button.jsx"},{"name":"ButtonGroup","sourcePath":"components/buttons/Button.jsx"},{"name":"IconButton","sourcePath":"components/buttons/IconButton.jsx"},{"name":"Bar3D","sourcePath":"components/charts/Bar3D.jsx"},{"name":"BarChart","sourcePath":"components/charts/BarChart.jsx"},{"name":"BarList","sourcePath":"components/charts/BarList.jsx"},{"name":"BoxPlot","sourcePath":"components/charts/BoxPlot.jsx"},{"name":"BulletChart","sourcePath":"components/charts/BulletChart.jsx"},{"name":"CandlestickChart","sourcePath":"components/charts/CandlestickChart.jsx"},{"name":"ChartLegend","sourcePath":"components/charts/ChartKit.jsx"},{"name":"ChartTooltip","sourcePath":"components/charts/ChartKit.jsx"},{"name":"PlotGrid","sourcePath":"components/charts/ChartKit.jsx"},{"name":"XLabels","sourcePath":"components/charts/ChartKit.jsx"},{"name":"ChartKit","sourcePath":"components/charts/ChartKit.jsx"},{"name":"ChordChart","sourcePath":"components/charts/ChordChart.jsx"},{"name":"DonutChart","sourcePath":"components/charts/DonutChart.jsx"},{"name":"FunnelChart","sourcePath":"components/charts/FunnelChart.jsx"},{"name":"GanttChart","sourcePath":"components/charts/GanttChart.jsx"},{"name":"GaugeChart","sourcePath":"components/charts/GaugeChart.jsx"},{"name":"HeatmapChart","sourcePath":"components/charts/HeatmapChart.jsx"},{"name":"Histogram","sourcePath":"components/charts/Histogram.jsx"},{"name":"LineChart","sourcePath":"components/charts/LineChart.jsx"},{"name":"ParetoChart","sourcePath":"components/charts/ParetoChart.jsx"},{"name":"Pie3D","sourcePath":"components/charts/Pie3D.jsx"},{"name":"RadarChart","sourcePath":"components/charts/RadarChart.jsx"},{"name":"Ribbon3D","sourcePath":"components/charts/Ribbon3D.jsx"},{"name":"SankeyChart","sourcePath":"components/charts/SankeyChart.jsx"},{"name":"Scatter3D","sourcePath":"components/charts/Scatter3D.jsx"},{"name":"ScatterChart","sourcePath":"components/charts/ScatterChart.jsx"},{"name":"Sparkline","sourcePath":"components/charts/Sparkline.jsx"},{"name":"SunburstChart","sourcePath":"components/charts/SunburstChart.jsx"},{"name":"Surface3D","sourcePath":"components/charts/Surface3D.jsx"},{"name":"TreemapChart","sourcePath":"components/charts/TreemapChart.jsx"},{"name":"WaterfallChart","sourcePath":"components/charts/WaterfallChart.jsx"},{"name":"WorldMap","sourcePath":"components/charts/WorldMap.jsx"},{"name":"SERIES","sourcePath":"components/charts/chart-geometry.js"},{"name":"CodeBlock","sourcePath":"components/data/CodeBlock.jsx"},{"name":"DiffValue","sourcePath":"components/data/DiffValue.jsx"},{"name":"FilterBar","sourcePath":"components/data/FilterBar.jsx"},{"name":"KeyValue","sourcePath":"components/data/KeyValue.jsx"},{"name":"KeyValueList","sourcePath":"components/data/KeyValue.jsx"},{"name":"ListRow","sourcePath":"components/data/ListRow.jsx"},{"name":"Pagination","sourcePath":"components/data/Pagination.jsx"},{"name":"SmartTable","sourcePath":"components/data/SmartTable.jsx"},{"name":"Spreadsheet","sourcePath":"components/data/Spreadsheet.jsx"},{"name":"Table","sourcePath":"components/data/Table.jsx"},{"name":"Avatar","sourcePath":"components/display/Avatar.jsx"},{"name":"AvatarGroup","sourcePath":"components/display/Avatar.jsx"},{"name":"StatusBadge","sourcePath":"components/display/Badge.jsx"},{"name":"Badge","sourcePath":"components/display/Badge.jsx"},{"name":"IconTile","sourcePath":"components/display/Badge.jsx"},{"name":"Card","sourcePath":"components/display/Card.jsx"},{"name":"StatCard","sourcePath":"components/display/Card.jsx"},{"name":"Divider","sourcePath":"components/display/Divider.jsx"},{"name":"Kbd","sourcePath":"components/display/Kbd.jsx"},{"name":"ProgressBar","sourcePath":"components/display/ProgressBar.jsx"},{"name":"Donut","sourcePath":"components/display/ProgressBar.jsx"},{"name":"AreaChart","sourcePath":"components/display/ProgressBar.jsx"},{"name":"MiniBars","sourcePath":"components/display/ProgressBar.jsx"},{"name":"Tag","sourcePath":"components/display/Tag.jsx"},{"name":"Accordion","sourcePath":"components/feedback/Accordion.jsx"},{"name":"ActivityItem","sourcePath":"components/feedback/ActivityItem.jsx"},{"name":"DotActivity","sourcePath":"components/feedback/ActivityItem.jsx"},{"name":"LogViewer","sourcePath":"components/feedback/ActivityItem.jsx"},{"name":"Alert","sourcePath":"components/feedback/Alert.jsx"},{"name":"EmptyState","sourcePath":"components/feedback/Alert.jsx"},{"name":"Skeleton","sourcePath":"components/feedback/Alert.jsx"},{"name":"Spinner","sourcePath":"components/feedback/Alert.jsx"},{"name":"Banner","sourcePath":"components/feedback/Banner.jsx"},{"name":"ContextMenu","sourcePath":"components/feedback/ContextMenu.jsx"},{"name":"Drawer","sourcePath":"components/feedback/Drawer.jsx"},{"name":"Menu","sourcePath":"components/feedback/Menu.jsx"},{"name":"Tooltip","sourcePath":"components/feedback/Modal.jsx"},{"name":"Modal","sourcePath":"components/feedback/Modal.jsx"},{"name":"Toast","sourcePath":"components/feedback/Modal.jsx"},{"name":"ToastStack","sourcePath":"components/feedback/Modal.jsx"},{"name":"Stepper","sourcePath":"components/feedback/Stepper.jsx"},{"name":"Timeline","sourcePath":"components/feedback/Timeline.jsx"},{"name":"Checkbox","sourcePath":"components/forms/Checkbox.jsx"},{"name":"Combobox","sourcePath":"components/forms/Combobox.jsx"},{"name":"DatePicker","sourcePath":"components/forms/DatePicker.jsx"},{"name":"Dropzone","sourcePath":"components/forms/Dropzone.jsx"},{"name":"Field","sourcePath":"components/forms/Field.jsx"},{"name":"GLOBAL_SEARCH_LABELS","sourcePath":"components/forms/global-search.js"},{"name":"GlobalSearch","sourcePath":"components/forms/GlobalSearch.jsx"},{"name":"Input","sourcePath":"components/forms/Input.jsx"},{"name":"Textarea","sourcePath":"components/forms/Input.jsx"},{"name":"MultiSelect","sourcePath":"components/forms/MultiSelect.jsx"},{"name":"NumberStepper","sourcePath":"components/forms/NumberStepper.jsx"},{"name":"Radio","sourcePath":"components/forms/Radio.jsx"},{"name":"RadioGroup","sourcePath":"components/forms/Radio.jsx"},{"name":"RelativeTimePicker","sourcePath":"components/forms/RelativeTimePicker.jsx"},{"name":"SearchInput","sourcePath":"components/forms/SearchInput.jsx"},{"name":"Select","sourcePath":"components/forms/Select.jsx"},{"name":"Slider","sourcePath":"components/forms/Slider.jsx"},{"name":"Switch","sourcePath":"components/forms/Switch.jsx"},{"name":"GS_KINDS","sourcePath":"components/forms/global-search.js"},{"name":"GS_ICONS","sourcePath":"components/forms/global-search.js"},{"name":"RELATIVE_TIME_UNITS","sourcePath":"components/forms/relative-time.js"},{"name":"RELATIVE_TIME_LABELS","sourcePath":"components/forms/relative-time.js"},{"name":"ICON_PATHS","sourcePath":"components/icons/Icon.jsx"},{"name":"Icon","sourcePath":"components/icons/Icon.jsx"},{"name":"LUCIDE_VERSION","sourcePath":"components/icons/lucide-loader.js"},{"name":"Lucide","sourcePath":"components/icons/Lucide.jsx"},{"name":"Unicon","sourcePath":"components/icons/Unicon.jsx"},{"name":"FEATHER_PATHS","sourcePath":"components/icons/feather-paths.js"},{"name":"VUE_ICON_PATHS","sourcePath":"components/icons/icon-paths.js"},{"name":"DataTable","sourcePath":"components/index.js"},{"name":"Breadcrumb","sourcePath":"components/navigation/Breadcrumb.jsx"},{"name":"ThemeToggle","sourcePath":"components/navigation/Breadcrumb.jsx"},{"name":"DocTree","sourcePath":"components/navigation/DocTree.jsx"},{"name":"SidePanel","sourcePath":"components/navigation/SidePanel.jsx"},{"name":"KEYBRICKS_MGMT","sourcePath":"components/navigation/nav-model.js"},{"name":"KEYBRICKS_NAV","sourcePath":"components/navigation/nav-model.js"},{"name":"KEYBRICKS_NAV_FOOTER","sourcePath":"components/navigation/nav-model.js"},{"name":"SIDEBAR_COLORS","sourcePath":"components/navigation/chrome-tones.js"},{"name":"Sidebar","sourcePath":"components/navigation/Sidebar.jsx"},{"name":"PageHeading","sourcePath":"components/navigation/TopBar.jsx"},{"name":"PageToolbar","sourcePath":"components/navigation/TopBar.jsx"},{"name":"THEME_OPTIONS","sourcePath":"components/navigation/TopBar.jsx"},{"name":"TopBar","sourcePath":"components/navigation/TopBar.jsx"},{"name":"UserMenu","sourcePath":"components/navigation/TopBar.jsx"},{"name":"Tree","sourcePath":"components/navigation/Tree.jsx"},{"name":"ConfigPanel","sourcePath":"components/pipeline/ConfigPanel.jsx"},{"name":"DataPreview","sourcePath":"components/pipeline/DataPreview.jsx"},{"name":"NodeCard","sourcePath":"components/pipeline/NodeCard.jsx"},{"name":"Port","sourcePath":"components/pipeline/NodeCard.jsx"},{"name":"PortLabel","sourcePath":"components/pipeline/NodeCard.jsx"},{"name":"PIPELINE_CATALOG","sourcePath":"components/pipeline/pipeline-catalog.js"},{"name":"PaletteItem","sourcePath":"components/pipeline/PalettePanel.jsx"},{"name":"PaletteListItem","sourcePath":"components/pipeline/PalettePanel.jsx"},{"name":"PalettePanel","sourcePath":"components/pipeline/PalettePanel.jsx"},{"name":"PipelineCanvas","sourcePath":"components/pipeline/PipelineCanvas.jsx"},{"name":"ZoomControls","sourcePath":"components/pipeline/ZoomControls.jsx"},{"name":"SegmentedControl","sourcePath":"components/tabs/SegmentedControl.jsx"},{"name":"CountBadge","sourcePath":"components/tabs/Tabs.jsx"},{"name":"PanelTabs","sourcePath":"components/tabs/Tabs.jsx"},{"name":"PillTabs","sourcePath":"components/tabs/Tabs.jsx"},{"name":"Tabs","sourcePath":"components/tabs/Tabs.jsx"},{"name":"ViewToggle","sourcePath":"components/tabs/ViewToggle.jsx"}],"sourceHashes":{"changelog.js":"ec2195f2b580","components/_shared/card-kit.js":"d1a34446784f","components/_shared/frame-theme.js":"bf16c8945df0","components/_shared/svg-download.js":"9d62db55383f","components/_shared/view-source.js":"fab1363c9ec6","components/buttons/ActionChip.jsx":"14bc07f40ce8","components/buttons/Button.jsx":"8f6d049d411e","components/buttons/IconButton.jsx":"7dc6876baab5","components/buttons/ai-button.js":"b9c77432191b","components/charts/Bar3D.jsx":"831825885981","components/charts/BarChart.jsx":"233a0bc11a9b","components/charts/BarList.jsx":"125a1dbb53ed","components/charts/BoxPlot.jsx":"8248a9768508","components/charts/BulletChart.jsx":"f72c2a568232","components/charts/CandlestickChart.jsx":"06c056166032","components/charts/ChartKit.jsx":"2f186e247fd2","components/charts/ChordChart.jsx":"f637257e4117","components/charts/DonutChart.jsx":"3b941dbb9b59","components/charts/FunnelChart.jsx":"4e0905360b64","components/charts/GanttChart.jsx":"385f02db3353","components/charts/GaugeChart.jsx":"675e34482ee7","components/charts/HeatmapChart.jsx":"563ed883a71b","components/charts/Histogram.jsx":"2cafc5676c9c","components/charts/LineChart.jsx":"4b650646e6d5","components/charts/ParetoChart.jsx":"0f7462fd7b7d","components/charts/Pie3D.jsx":"a712524cd12c","components/charts/RadarChart.jsx":"2c5d2186a949","components/charts/Ribbon3D.jsx":"af1793d05d39","components/charts/SankeyChart.jsx":"954d95f4d065","components/charts/Scatter3D.jsx":"ef50d4381338","components/charts/ScatterChart.jsx":"77c05131ec98","components/charts/Sparkline.jsx":"9d8f3fa12642","components/charts/SunburstChart.jsx":"125f214d8795","components/charts/Surface3D.jsx":"aee8e4b7ee78","components/charts/TreemapChart.jsx":"dda7f388e540","components/charts/WaterfallChart.jsx":"5a330bd1827c","components/charts/WorldMap.jsx":"606387955701","components/charts/chart-3d.js":"3d737da91401","components/charts/chart-geometry.js":"a12030d8657d","components/data/CodeBlock.jsx":"6e690f47fc42","components/data/DiffValue.jsx":"c935ef5dd50b","components/data/FilterBar.jsx":"39f18062ca6f","components/data/KeyValue.jsx":"9bdc389e0d7e","components/data/ListRow.jsx":"e578944ee86a","components/data/Pagination.jsx":"c3bbaae7dc5a","components/data/SmartTable.jsx":"3c8becbc7196","components/data/Spreadsheet.jsx":"a77fd88f3569","components/data/Table.jsx":"b3fa1348d494","components/data/row-open.js":"03bf33bfa4c2","components/display/Avatar.jsx":"977b19df247c","components/display/Badge.jsx":"e88da52fcfc4","components/display/Card.jsx":"8a7b8364a215","components/display/Divider.jsx":"bb429e2d0956","components/display/Kbd.jsx":"3c378009453d","components/display/ProgressBar.jsx":"fdde3c872e07","components/display/Tag.jsx":"9273edfc3e38","components/feedback/Accordion.jsx":"73c086d09ba4","components/feedback/ActivityItem.jsx":"0adc1a58c612","components/feedback/Alert.jsx":"f6de26206dae","components/feedback/Banner.jsx":"610a45f96ecd","components/feedback/ContextMenu.jsx":"dfdde5683263","components/feedback/Drawer.jsx":"f19acf9e3a00","components/feedback/Menu.jsx":"6e92100d3d2b","components/feedback/Modal.jsx":"2841d6ce35f4","components/feedback/Stepper.jsx":"a0cb5b659998","components/feedback/Timeline.jsx":"2b8c0f37503e","components/feedback/modal-behavior.js":"d1300f890f19","components/forms/Checkbox.jsx":"db9c8ff69653","components/forms/Combobox.jsx":"8ec375433182","components/forms/DatePicker.jsx":"e7366c603a9f","components/forms/Dropzone.jsx":"5432a672a429","components/forms/Field.jsx":"8e4649e1a18b","components/forms/GlobalSearch.jsx":"432c5899649a","components/forms/Input.jsx":"95922d854a24","components/forms/MultiSelect.jsx":"14636d36331b","components/forms/NumberStepper.jsx":"6e0c940000fe","components/forms/Radio.jsx":"96e36a9b1c79","components/forms/RelativeTimePicker.jsx":"23755d41a8c1","components/forms/SearchInput.jsx":"40dae28d378f","components/forms/Select.jsx":"870c20ebcd67","components/forms/Slider.jsx":"ebd21a287cc3","components/forms/Switch.jsx":"e1303512a946","components/forms/global-search.js":"10bbf84803dc","components/forms/input-base.js":"988c002d8357","components/forms/relative-time.js":"64155d3bcdcf","components/icons/Icon.jsx":"26135ed6632c","components/icons/Lucide.jsx":"42c8091d53f5","components/icons/Unicon.jsx":"03683a8eb3d3","components/icons/feather-paths.js":"f8ca847bbdf3","components/icons/icon-paths.js":"0a50d04574ee","components/icons/lucide-loader.js":"b2fe23ee92fc","components/index.js":"9a4e6fbbb25c","components/navigation/Breadcrumb.jsx":"26b271b8d1dd","components/navigation/DocTree.jsx":"02a7d753e159","components/navigation/SidePanel.jsx":"4691ef93e84e","components/navigation/Sidebar.jsx":"6ce469c00f26","components/navigation/TopBar.jsx":"0b9d74133402","components/navigation/Tree.jsx":"9ebccb3a8e40","components/navigation/chrome-tones.js":"073b9df6aef5","components/navigation/nav-model.js":"e091dd62900c","components/navigation/theme-store.js":"c05c61fb0bd2","components/pipeline/ConfigPanel.jsx":"8cf8677f4472","components/pipeline/DataPreview.jsx":"7aaf081fcd16","components/pipeline/NodeCard.jsx":"357042c92033","components/pipeline/PalettePanel.jsx":"1d28f2d3abac","components/pipeline/PipelineCanvas.jsx":"09eb8b7d7f61","components/pipeline/ZoomControls.jsx":"7bd9fa5c4c9b","components/pipeline/pipeline-catalog.js":"9a3250315e88","components/pipeline/port-skin.js":"9bdd304628a6","components/px.js":"4ab7eb225e9d","components/tabs/SegmentedControl.jsx":"ae08c2ef8a1e","components/tabs/Tabs.jsx":"d92fbada1ef2","components/tabs/ViewToggle.jsx":"3a77b9900151","covers.js":"5207b155f561","site-nav.js":"46e1e672f269","tokens/theme.js":"1848ef09eb46","tokens/tokens.js":"049947750936"},"inlinedExternals":[],"unexposedExports":[{"name":"aiSpinDelay","sourcePath":"components/buttons/ai-button.js"},{"name":"aiStyles","sourcePath":"components/buttons/ai-button.js"},{"name":"applyStoredTheme","sourcePath":"components/navigation/theme-store.js"},{"name":"arcPath","sourcePath":"components/charts/chart-geometry.js"},{"name":"areaPath","sourcePath":"components/charts/chart-geometry.js"},{"name":"changeRelativeAmount","sourcePath":"components/forms/relative-time.js"},{"name":"changeRelativeUnit","sourcePath":"components/forms/relative-time.js"},{"name":"chord","sourcePath":"components/charts/chart-geometry.js"},{"name":"chordRibbon","sourcePath":"components/charts/chart-geometry.js"},{"name":"chromeTone","sourcePath":"components/navigation/chrome-tones.js"},{"name":"closeToBaseline","sourcePath":"components/charts/chart-geometry.js"},{"name":"colName","sourcePath":"components/data/Spreadsheet.jsx"},{"name":"cssVar","sourcePath":"tokens/tokens.js"},{"name":"cuboidFaces","sourcePath":"components/charts/chart-3d.js"},{"name":"curvePath","sourcePath":"components/charts/chart-geometry.js"},{"name":"dark","sourcePath":"tokens/tokens.js"},{"name":"dragRotate","sourcePath":"components/charts/chart-3d.js"},{"name":"extent","sourcePath":"components/charts/chart-geometry.js"},{"name":"faceDepth","sourcePath":"components/charts/chart-3d.js"},{"name":"facePath","sourcePath":"components/charts/chart-3d.js"},{"name":"fmtNum","sourcePath":"components/charts/chart-geometry.js"},{"name":"gsAiTile","sourcePath":"components/forms/global-search.js"},{"name":"gsFill","sourcePath":"components/forms/global-search.js"},{"name":"gsFilter","sourcePath":"components/forms/global-search.js"},{"name":"gsIsMac","sourcePath":"components/forms/global-search.js"},{"name":"gsLabels","sourcePath":"components/forms/global-search.js"},{"name":"gsMod","sourcePath":"components/forms/global-search.js"},{"name":"gsPos","sourcePath":"components/forms/global-search.js"},{"name":"gsReveal","sourcePath":"components/forms/global-search.js"},{"name":"gsRows","sourcePath":"components/forms/global-search.js"},{"name":"gsSplit","sourcePath":"components/forms/global-search.js"},{"name":"gsStyles","sourcePath":"components/forms/global-search.js"},{"name":"heatColor","sourcePath":"components/charts/chart-3d.js"},{"name":"heatStep","sourcePath":"components/charts/chart-geometry.js"},{"name":"iconGradientDefs","sourcePath":"components/icons/Icon.jsx"},{"name":"inputBase","sourcePath":"components/forms/input-base.js"},{"name":"light","sourcePath":"tokens/tokens.js"},{"name":"lightOf","sourcePath":"components/charts/chart-3d.js"},{"name":"linePath","sourcePath":"components/charts/chart-geometry.js"},{"name":"loadLucide","sourcePath":"components/icons/lucide-loader.js"},{"name":"lucideBody","sourcePath":"components/icons/lucide-loader.js"},{"name":"lucideReady","sourcePath":"components/icons/lucide-loader.js"},{"name":"makeProj","sourcePath":"components/charts/chart-3d.js"},{"name":"modalOpen","sourcePath":"components/feedback/modal-behavior.js"},{"name":"niceTicks","sourcePath":"components/charts/chart-geometry.js"},{"name":"normalizeRelativeTime","sourcePath":"components/forms/relative-time.js"},{"name":"onLucideReady","sourcePath":"components/icons/lucide-loader.js"},{"name":"polar","sourcePath":"components/charts/chart-geometry.js"},{"name":"portSkin","sourcePath":"components/pipeline/port-skin.js"},{"name":"px","sourcePath":"components/px.js"},{"name":"quantize","sourcePath":"components/charts/chart-geometry.js"},{"name":"rampAiSpin","sourcePath":"components/buttons/ai-button.js"},{"name":"relativeTimePosition","sourcePath":"components/forms/relative-time.js"},{"name":"relativeTimeText","sourcePath":"components/forms/relative-time.js"},{"name":"relativeUnitLabel","sourcePath":"components/forms/relative-time.js"},{"name":"resolveRelativeTime","sourcePath":"components/forms/relative-time.js"},{"name":"rotate3","sourcePath":"components/charts/chart-3d.js"},{"name":"rowOpenFromClick","sourcePath":"components/data/row-open.js"},{"name":"sankey","sourcePath":"components/charts/chart-geometry.js"},{"name":"scaleLin","sourcePath":"components/charts/chart-geometry.js"},{"name":"seriesColor","sourcePath":"components/charts/chart-geometry.js"},{"name":"setLucideSource","sourcePath":"components/icons/lucide-loader.js"},{"name":"shade","sourcePath":"components/charts/chart-3d.js"},{"name":"shapePath","sourcePath":"components/charts/chart-geometry.js"},{"name":"stack","sourcePath":"components/charts/chart-geometry.js"},{"name":"stepPath","sourcePath":"components/charts/chart-geometry.js"},{"name":"summarize","sourcePath":"components/charts/BoxPlot.jsx"},{"name":"thinLabels","sourcePath":"components/charts/ChartKit.jsx"},{"name":"tokenNames","sourcePath":"tokens/tokens.js"},{"name":"treemap","sourcePath":"components/charts/chart-geometry.js"},{"name":"waterfall","sourcePath":"components/charts/chart-geometry.js"},{"name":"wrapStyle","sourcePath":"components/charts/ChartKit.jsx"}]} */
|
|
2
2
|
|
|
3
3
|
(() => {
|
|
4
4
|
|
|
@@ -12,9 +12,76 @@ const __ds_scope = {};
|
|
|
12
12
|
try { (() => {
|
|
13
13
|
/* Keybricks changelog — the source for the Changelog section of index.html. Newest first.
|
|
14
14
|
Each release: v, date (ISO, "" when not recorded), status ("unreleased" until it is tagged), items.
|
|
15
|
-
Each item: tag (new | improved | fixed | breaking | removed) and the text as [en, zh, ja].
|
|
15
|
+
Each item: tag (new | improved | fixed | breaking | removed | rule — a team rule, shown in amber) and the text as [en, zh, ja].
|
|
16
16
|
INTEGRATION.md keeps the full migration notes; this list is the short, reader-facing summary. */
|
|
17
17
|
window.KB_CHANGELOG = [{
|
|
18
|
+
v: "2.8.0",
|
|
19
|
+
date: "2026-11-03",
|
|
20
|
+
status: "unreleased",
|
|
21
|
+
items: [{
|
|
22
|
+
tag: "rule",
|
|
23
|
+
t: ["For notices and dialogs use <code>Toast</code> / <code>ToastStack</code> and <code>Modal</code> (Vue services: <code>Message</code> / <code>MessageBox</code>, built on them). Before building any new component, check the component list; only when nothing there fits may you build one — please check with Felix first.", "提示和弹窗一律使用 <code>Toast</code> / <code>ToastStack</code> 和 <code>Modal</code>(Vue 命令式调用用基于它们的 <code>Message</code> / <code>MessageBox</code>)。新建任何组件前先查组件列表,只有找不到现成可用的才能新建,请先问 Felix。", "通知とダイアログには必ず <code>Toast</code> / <code>ToastStack</code> と <code>Modal</code> を使う(Vue の命令的な呼び出しはそれらを使う <code>Message</code> / <code>MessageBox</code>)。新しいコンポーネントを作る前にコンポーネント一覧を確認し、使えるものがない場合のみ作成可。その際はまず Felix に相談してください。"]
|
|
24
|
+
}, {
|
|
25
|
+
tag: "improved",
|
|
26
|
+
t: ["Modal: Esc closes, focus stays inside and returns on close, the page behind stops scrolling; new options to block closing by scrim / Esc / ×, and a must-answer mode.", "弹窗:支持 Esc 关闭,焦点留在弹窗内、关闭后回到原处,打开时背后页面不滚动;新增可选设置:禁止点遮罩 / Esc / × 关闭,以及必须回答模式。", "モーダル:Esc で閉じる、フォーカスを内側に保持し閉じたら元に戻す、背面のスクロールを停止。遮罩 / Esc / × で閉じない設定と、必ず回答するモードを追加。"]
|
|
27
|
+
}, {
|
|
28
|
+
tag: "improved",
|
|
29
|
+
t: ["ToastStack: choose the position (top-center, top-right, bottom-right, bottom-center), auto-dismiss with pause on hover, and “× 2” for repeated messages. Toasts are read out by screen readers.", "轻提示堆叠:可设置位置(顶部居中、右上、右下、底部居中),可自动消失、悬停时暂停,重复消息显示“× 2”。读屏软件会读出提示。", "トーストスタック:表示位置(上中央・右上・右下・下中央)を選択可能、ホバーで一時停止する自動クローズ、同じ通知は「× 2」と表示。スクリーンリーダーが読み上げる。"]
|
|
30
|
+
}, {
|
|
31
|
+
tag: "improved",
|
|
32
|
+
t: ["Vue Message and MessageBox now render with ToastStack and Modal — no second look to maintain. Their source moved to <code>_vue-services/</code>; imports stay the same.", "Vue 的 Message 和 MessageBox 改为直接用 ToastStack 和 Modal 显示,不再另有一套样式;源码移到 <code>_vue-services/</code>,引用方式不变。", "Vue の Message と MessageBox は ToastStack と Modal で表示するように変更し、別の見た目を持たない。ソースは <code>_vue-services/</code> へ移動、インポート方法は変わらない。"]
|
|
33
|
+
}, {
|
|
34
|
+
tag: "new",
|
|
35
|
+
t: ["Table: <code>rowOpen=\"row\"</code> opens a row from a click anywhere on it (hand cursor on the whole row); buttons, checkboxes, inputs, links, the ⋯ menu, the tree arrow and text selection are left alone.", "表格:<code>rowOpen=\"row\"</code> 时点击整行任意空白处即可打开该行(整行显示手型光标);按钮、复选框、输入框、链接、更多菜单、树形箭头和选中文字不受影响。", "テーブル:<code>rowOpen=\"row\"</code> で行のどこをクリックしても開けるように(行全体が手のカーソル)。ボタン、チェックボックス、入力欄、リンク、⋯ メニュー、ツリーの矢印、テキスト選択はそのまま。"]
|
|
36
|
+
}, {
|
|
37
|
+
tag: "improved",
|
|
38
|
+
t: ["Tree follows the size tier of its region: 28px rows and 12px text in sm, unchanged in md.", "树形视图跟随所在区域的尺寸档位:sm 档为 28px 行高、12px 文字,md 档外观不变。", "ツリーが領域のサイズ段階に追従:sm は行高 28px・文字 12px、md は従来どおり。"]
|
|
39
|
+
}, {
|
|
40
|
+
tag: "new",
|
|
41
|
+
t: ["Tree: <code>icon: false</code> on a node drops its icon without leaving a gap — for a root such as “Documents”.", "树形视图:节点设置 <code>icon: false</code> 时不显示图标、也不留空位,适合“Documents”这类根节点。", "ツリー:ノードに <code>icon: false</code> を指定するとアイコンを表示せず余白も残さない。「Documents」のようなルートに。"]
|
|
42
|
+
}]
|
|
43
|
+
}, {
|
|
44
|
+
v: "2.7.0",
|
|
45
|
+
date: "2026-11-02",
|
|
46
|
+
items: [{
|
|
47
|
+
tag: "new",
|
|
48
|
+
t: ["<b>AI button</b> (<code>variant=\"ai\"</code>) for Prophet AI entry points: animated gradient ring, tint and glow on hover.", "<b>AI 按钮</b>(<code>variant=\"ai\"</code>),专用于方知入口:渐变描边缓慢流动,悬停时出现渐变底色和光晕。", "<b>AI ボタン</b>(<code>variant=\"ai\"</code>)を追加。Prophet AI の入口専用:グラデーションの枠が流れ、ホバーで色味と光彩が出る。"]
|
|
49
|
+
}, {
|
|
50
|
+
tag: "new",
|
|
51
|
+
t: ["<b>Global Search</b> in the top bar: ⌘K / Ctrl K, scopes, grouped results, Deep Search, and one step to hand a question to Prophet AI.", "顶栏新增<b>全局搜索</b>:⌘K / Ctrl K 唤起,支持范围切换、分组结果、深度搜索,并可一步把问题交给方知。", "トップバーに<b>グローバル検索</b>を追加:⌘K / Ctrl K で起動、スコープ切替、グループ化された結果、ディープサーチ、質問を Prophet AI へ引き継ぎ。"]
|
|
52
|
+
}, {
|
|
53
|
+
tag: "improved",
|
|
54
|
+
t: ["Top bar: the black “AI Assistant” pill is replaced by Global Search; existing props keep working.", "顶栏:黑色“AI Assistant”按钮由全局搜索取代,原有属性仍可使用。", "トップバー:黒い「AI Assistant」ボタンをグローバル検索に置き換え。既存の props はそのまま使える。"]
|
|
55
|
+
}, {
|
|
56
|
+
tag: "improved",
|
|
57
|
+
t: ["Keyboard shortcuts show ⌘ ⌥ ⇧ ↵ on Mac and Ctrl Alt Shift Enter on Windows automatically.", "快捷键提示自动区分系统:Mac 显示 ⌘ ⌥ ⇧ ↵,Windows 显示 Ctrl Alt Shift Enter。", "ショートカット表示を OS に合わせて自動切替:Mac は ⌘ ⌥ ⇧ ↵、Windows は Ctrl Alt Shift Enter。"]
|
|
58
|
+
}, {
|
|
59
|
+
tag: "improved",
|
|
60
|
+
t: ["Toasts are tinted by tone, so they stand out on any page.", "Toast 提示按类型着色,在任何页面上都更醒目。", "トーストを種類ごとに色付けし、どの画面でも目立つように。"]
|
|
61
|
+
}, {
|
|
62
|
+
tag: "improved",
|
|
63
|
+
t: ["React Button and Toast get the props Vue gained in 2.6.0 (trailing icon, native type, custom icon, close label).", "React 的 Button 和 Toast 补齐 2.6.0 中 Vue 新增的能力(尾部图标、原生按钮类型、自定义图标、关闭按钮文案)。", "React の Button と Toast に 2.6.0 で Vue に追加された機能(末尾アイコン、ボタン種別、カスタムアイコン、閉じるボタンのラベル)を追加。"]
|
|
64
|
+
}, {
|
|
65
|
+
tag: "new",
|
|
66
|
+
t: ["New <code>prophet-sparkle</code> icon; the AI sparkle icons are redrawn.", "新增 <code>prophet-sparkle</code> 图标,AI 星星图标重新绘制。", "<code>prophet-sparkle</code> アイコンを追加し、AI のきらめきアイコンを描き直し。"]
|
|
67
|
+
}, {
|
|
68
|
+
tag: "fixed",
|
|
69
|
+
t: ["Example cards are sized to their content, so the page no longer jumps while loading.", "示例卡片高度贴合内容,页面加载时不再跳动。", "例のカードを内容の高さに合わせ、読み込み中にページが跳ばないように。"]
|
|
70
|
+
}]
|
|
71
|
+
}, {
|
|
72
|
+
v: "2.6.0",
|
|
73
|
+
date: "2026-11-02",
|
|
74
|
+
items: [{
|
|
75
|
+
tag: "improved",
|
|
76
|
+
t: ["Vue Button now forwards native click events and supports component / VNode icons, icon / loading / trailing slots, trailing icons, native button types and aria-busy.", "Vue Button 补充原生点击事件、组件 / VNode 图标、icon / loading / trailing 插槽、独立尾部图标、原生按钮类型及 aria-busy。", "Vue Button がネイティブ click イベント、コンポーネント / VNode アイコン、icon / loading / trailing スロット、末尾アイコン、ボタン種別と aria-busy に対応。"]
|
|
77
|
+
}, {
|
|
78
|
+
tag: "new",
|
|
79
|
+
t: ["Vue Message service: timed and grouped Toast notifications, stacking, close handles, VNode content and app context.", "Vue 新增 Message 服务:支持自动关闭、消息分组与堆叠、关闭句柄、VNode 内容及应用上下文。", "Vue Message サービスを追加:自動終了、グループ化、スタック、終了ハンドル、VNode とアプリコンテキストに対応。"]
|
|
80
|
+
}, {
|
|
81
|
+
tag: "new",
|
|
82
|
+
t: ["Vue MessageBox service: alert / confirm / prompt, queued dialogs, validation, beforeClose, focus management and configurable labels. See the migration guide for compatibility limits.", "Vue 新增 MessageBox 服务:支持 alert / confirm / prompt、弹窗队列、输入校验、beforeClose、焦点管理及可配置文案;兼容边界见迁移说明。", "Vue MessageBox サービスを追加:alert / confirm / prompt、キュー、入力検証、beforeClose、フォーカス管理とラベル設定。互換性の制限は移行ガイドを参照。"]
|
|
83
|
+
}]
|
|
84
|
+
}, {
|
|
18
85
|
v: "2.5.1",
|
|
19
86
|
date: "2026-10-30",
|
|
20
87
|
items: [{
|
|
@@ -609,6 +676,154 @@ function ActionChip({
|
|
|
609
676
|
Object.assign(__ds_scope, { ActionChip });
|
|
610
677
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/buttons/ActionChip.jsx", error: String((e && e.message) || e) }); }
|
|
611
678
|
|
|
679
|
+
// components/buttons/ai-button.js
|
|
680
|
+
try { (() => {
|
|
681
|
+
/* Button variant="ai" — the Prophet AI (方知) entry treatment, shared by Button.jsx and Button.vue.
|
|
682
|
+
Same outer box as every Button at the tier (height, radius, padding); the 1px border is replaced by a 1px ring:
|
|
683
|
+
at rest a gradient comet travels round a neutral track; on hover the full ring, an 8% gradient tint, a soft glow and a
|
|
684
|
+
gradient icon fade in and the ring speeds up. Tokens: tokens/ai.css. One CSS animation (kb-ai-spin) drives the angle;
|
|
685
|
+
hover speed is ramped with Animation.playbackRate, so the angle never jumps. */
|
|
686
|
+
/* The animated angle needs a registered <angle> property and a keyframe on it — injected once, so the token files stay plain. */
|
|
687
|
+
if (typeof document !== "undefined" && !document.querySelector("style[data-kb-ai]")) {
|
|
688
|
+
const el = document.createElement("style");
|
|
689
|
+
el.setAttribute("data-kb-ai", "");
|
|
690
|
+
el.textContent = "@property --kb-ai-angle{syntax:'<angle>';inherits:true;initial-value:0deg}@keyframes kb-ai-spin{to{--kb-ai-angle:360deg}}";
|
|
691
|
+
document.head.appendChild(el);
|
|
692
|
+
}
|
|
693
|
+
const FADE = "opacity 300ms var(--ease-out)";
|
|
694
|
+
const FULL = "conic-gradient(from var(--kb-ai-angle), var(--ai-gradient-stops))";
|
|
695
|
+
const COMET = "conic-gradient(from var(--kb-ai-angle), var(--ai-ring-rest-track) 0 50%, var(--ai-gradient-start) 78%, var(--ai-gradient-end) 100%)";
|
|
696
|
+
const layer = {
|
|
697
|
+
position: "absolute",
|
|
698
|
+
inset: "0",
|
|
699
|
+
borderRadius: "inherit",
|
|
700
|
+
pointerEvents: "none",
|
|
701
|
+
transition: FADE
|
|
702
|
+
};
|
|
703
|
+
|
|
704
|
+
/** A random phase per instance, so neighbouring rings never move in lockstep. */
|
|
705
|
+
const aiSpinDelay = () => "-" + (Math.random() * 5).toFixed(2) + "s";
|
|
706
|
+
|
|
707
|
+
/** on = hovered (and not busy). Lengths are strings so the same objects work in React and Vue. */
|
|
708
|
+
function aiStyles({
|
|
709
|
+
on,
|
|
710
|
+
press,
|
|
711
|
+
busy,
|
|
712
|
+
focused,
|
|
713
|
+
medium,
|
|
714
|
+
fullWidth,
|
|
715
|
+
iconOnly,
|
|
716
|
+
delay,
|
|
717
|
+
style
|
|
718
|
+
}) {
|
|
719
|
+
const tint = press ? "var(--ai-tint-press)" : "var(--ai-tint)";
|
|
720
|
+
return {
|
|
721
|
+
outer: {
|
|
722
|
+
position: "relative",
|
|
723
|
+
isolation: "isolate",
|
|
724
|
+
display: fullWidth ? "flex" : "inline-flex",
|
|
725
|
+
alignItems: "stretch",
|
|
726
|
+
width: fullWidth ? "100%" : iconOnly ? "var(--control-h)" : undefined,
|
|
727
|
+
height: "var(--control-h)",
|
|
728
|
+
padding: "var(--ai-ring-width)",
|
|
729
|
+
border: "none",
|
|
730
|
+
borderRadius: "var(--radius-md)",
|
|
731
|
+
boxSizing: "border-box",
|
|
732
|
+
background: COMET,
|
|
733
|
+
animation: "kb-ai-spin var(--ai-spin-rest) linear " + delay + " infinite",
|
|
734
|
+
cursor: busy ? "default" : "pointer",
|
|
735
|
+
opacity: busy ? .55 : undefined,
|
|
736
|
+
boxShadow: focused && !busy ? "var(--ring-focus)" : undefined,
|
|
737
|
+
fontFamily: "var(--font-sans)",
|
|
738
|
+
fontWeight: medium ? "var(--weight-medium)" : "var(--weight-regular)",
|
|
739
|
+
fontSize: "var(--control-text)",
|
|
740
|
+
lineHeight: "var(--control-leading)",
|
|
741
|
+
letterSpacing: "var(--control-tracking)",
|
|
742
|
+
color: "var(--text-body)",
|
|
743
|
+
whiteSpace: "nowrap",
|
|
744
|
+
verticalAlign: "middle",
|
|
745
|
+
...style
|
|
746
|
+
},
|
|
747
|
+
glow: {
|
|
748
|
+
...layer,
|
|
749
|
+
zIndex: "-1",
|
|
750
|
+
background: FULL,
|
|
751
|
+
filter: "blur(var(--ai-glow-blur))",
|
|
752
|
+
opacity: on ? "var(--ai-glow-opacity)" : "0"
|
|
753
|
+
},
|
|
754
|
+
ring: {
|
|
755
|
+
...layer,
|
|
756
|
+
background: FULL,
|
|
757
|
+
opacity: on ? "1" : "0"
|
|
758
|
+
},
|
|
759
|
+
surface: {
|
|
760
|
+
position: "relative",
|
|
761
|
+
flex: "1 1 auto",
|
|
762
|
+
display: "flex",
|
|
763
|
+
alignItems: "center",
|
|
764
|
+
justifyContent: "center",
|
|
765
|
+
gap: iconOnly ? "0" : "6px",
|
|
766
|
+
padding: iconOnly ? "0" : "0 calc(var(--control-px) - var(--ai-ring-width))",
|
|
767
|
+
borderRadius: "calc(var(--radius-md) - var(--ai-ring-width))",
|
|
768
|
+
background: "var(--bg-surface)",
|
|
769
|
+
overflow: "hidden"
|
|
770
|
+
},
|
|
771
|
+
tint: {
|
|
772
|
+
...layer,
|
|
773
|
+
background: "linear-gradient(90deg, color-mix(in srgb, var(--ai-gradient-start) " + tint + ", transparent), color-mix(in srgb, var(--ai-gradient-end) " + tint + ", transparent))",
|
|
774
|
+
opacity: on || press ? "1" : "0"
|
|
775
|
+
},
|
|
776
|
+
iconBox: {
|
|
777
|
+
position: "relative",
|
|
778
|
+
display: "inline-flex",
|
|
779
|
+
flexShrink: "0"
|
|
780
|
+
},
|
|
781
|
+
iconRest: {
|
|
782
|
+
transition: FADE,
|
|
783
|
+
opacity: on ? "0" : "1"
|
|
784
|
+
},
|
|
785
|
+
iconGrad: {
|
|
786
|
+
position: "absolute",
|
|
787
|
+
inset: "0",
|
|
788
|
+
transition: FADE,
|
|
789
|
+
opacity: on ? "1" : "0"
|
|
790
|
+
},
|
|
791
|
+
label: {
|
|
792
|
+
position: "relative"
|
|
793
|
+
}
|
|
794
|
+
};
|
|
795
|
+
}
|
|
796
|
+
const secs = (v, d) => {
|
|
797
|
+
v = (v || "").trim();
|
|
798
|
+
const n = parseFloat(v);
|
|
799
|
+
return isNaN(n) ? d : /ms$/.test(v) ? n / 1000 : n;
|
|
800
|
+
};
|
|
801
|
+
/** Ease the ring's speed toward rest (fast=false) or hover (fast=true). Returns a cancel function. */
|
|
802
|
+
function rampAiSpin(el, fast) {
|
|
803
|
+
if (!el || !el.getAnimations || typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches) return () => {};
|
|
804
|
+
const anim = el.getAnimations().find(a => a.animationName === "kb-ai-spin");
|
|
805
|
+
if (!anim) return () => {};
|
|
806
|
+
const cs = getComputedStyle(el);
|
|
807
|
+
const target = fast ? secs(cs.getPropertyValue("--ai-spin-rest"), 5) / secs(cs.getPropertyValue("--ai-spin-hover"), 1.2) : 1;
|
|
808
|
+
let raf = 0,
|
|
809
|
+
last = performance.now();
|
|
810
|
+
const step = t => {
|
|
811
|
+
const dt = Math.min(0.05, (t - last) / 1000);
|
|
812
|
+
last = t;
|
|
813
|
+
const r = anim.playbackRate + (target - anim.playbackRate) * Math.min(1, dt * 5);
|
|
814
|
+
if (Math.abs(target - r) < 0.01) {
|
|
815
|
+
anim.playbackRate = target;
|
|
816
|
+
return;
|
|
817
|
+
}
|
|
818
|
+
anim.playbackRate = r;
|
|
819
|
+
raf = requestAnimationFrame(step);
|
|
820
|
+
};
|
|
821
|
+
raf = requestAnimationFrame(step);
|
|
822
|
+
return () => cancelAnimationFrame(raf);
|
|
823
|
+
}
|
|
824
|
+
Object.assign(__ds_scope, { aiSpinDelay, aiStyles, rampAiSpin });
|
|
825
|
+
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/buttons/ai-button.js", error: String((e && e.message) || e) }); }
|
|
826
|
+
|
|
612
827
|
// components/charts/chart-3d.js
|
|
613
828
|
try { (() => {
|
|
614
829
|
// Shared 3D chart math: yaw/pitch rotation, orthographic projection, depth sorting,
|
|
@@ -5749,6 +5964,25 @@ function KeyValueList({
|
|
|
5749
5964
|
Object.assign(__ds_scope, { KeyValue, KeyValueList });
|
|
5750
5965
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/KeyValue.jsx", error: String((e && e.message) || e) }); }
|
|
5751
5966
|
|
|
5967
|
+
// components/data/row-open.js
|
|
5968
|
+
try { (() => {
|
|
5969
|
+
/* Table rowOpen="row": decides whether a click on a body row opens it. Clicks on controls inside the row (buttons — the ⋯ menu and
|
|
5970
|
+
the tree arrow included — checkboxes, inputs, links, menus), on the title / tile that open the row themselves, and clicks that end a
|
|
5971
|
+
text selection do not. Header cells and resize handles sit outside the body rows, so they never reach here. */
|
|
5972
|
+
const SKIP = 'button, a[href], input, select, textarea, label, summary, [contenteditable=""], [contenteditable="true"], [role="button"], [role="checkbox"], [role="switch"], [role="radio"], [role="menuitem"], [role="menu"], [role="link"], [role="combobox"], [role="slider"], [data-row-open], [data-row-skip]';
|
|
5973
|
+
function rowOpenFromClick(e) {
|
|
5974
|
+
const tr = e.currentTarget,
|
|
5975
|
+
t = e.target;
|
|
5976
|
+
if (!tr || e.defaultPrevented || e.button != null && e.button !== 0) return false;
|
|
5977
|
+
const hit = t && t.closest ? t.closest(SKIP) : null;
|
|
5978
|
+
if (hit && tr.contains(hit)) return false;
|
|
5979
|
+
const sel = typeof window !== "undefined" && window.getSelection ? window.getSelection() : null;
|
|
5980
|
+
if (sel && !sel.isCollapsed && String(sel).length > 0) return false;
|
|
5981
|
+
return true;
|
|
5982
|
+
}
|
|
5983
|
+
Object.assign(__ds_scope, { rowOpenFromClick });
|
|
5984
|
+
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/data/row-open.js", error: String((e && e.message) || e) }); }
|
|
5985
|
+
|
|
5752
5986
|
// components/display/Avatar.jsx
|
|
5753
5987
|
try { (() => {
|
|
5754
5988
|
const palette = ["var(--cat-join)", "var(--cat-source)", "var(--cat-transform)", "var(--cat-merge)", "var(--cat-output)"];
|
|
@@ -5979,11 +6213,30 @@ Object.assign(__ds_scope, { Divider });
|
|
|
5979
6213
|
|
|
5980
6214
|
// components/display/Kbd.jsx
|
|
5981
6215
|
try { (() => {
|
|
5982
|
-
|
|
6216
|
+
const KBD_MAP = {
|
|
6217
|
+
mod: ["⌘", "Ctrl"],
|
|
6218
|
+
cmd: ["⌘", "Ctrl"],
|
|
6219
|
+
ctrl: ["⌃", "Ctrl"],
|
|
6220
|
+
alt: ["⌥", "Alt"],
|
|
6221
|
+
opt: ["⌥", "Alt"],
|
|
6222
|
+
shift: ["⇧", "Shift"],
|
|
6223
|
+
enter: ["⏎", "Enter"],
|
|
6224
|
+
backspace: ["⌫", "Backspace"],
|
|
6225
|
+
esc: ["Esc", "Esc"]
|
|
6226
|
+
};
|
|
6227
|
+
const isMacPlatform = () => typeof navigator !== "undefined" && /mac|iphone|ipad|ipod/i.test(navigator.userAgentData && navigator.userAgentData.platform || navigator.platform || navigator.userAgent || "");
|
|
6228
|
+
const resolveKbd = (k, mac) => {
|
|
6229
|
+
const m = KBD_MAP[String(k).toLowerCase()];
|
|
6230
|
+
return m ? m[mac ? 0 : 1] : k;
|
|
6231
|
+
};
|
|
6232
|
+
|
|
6233
|
+
/** Keyboard shortcut hint. Use semantic keys so it adapts per OS: <Kbd keys={["mod","K"]}/> → ⌘ K on macOS, Ctrl K on Windows/Linux. Literal labels ("⌘", "F5") pass through unchanged. platform: "auto" (default) | "mac" | "win". */
|
|
5983
6234
|
function Kbd({
|
|
5984
6235
|
keys = [],
|
|
6236
|
+
platform = "auto",
|
|
5985
6237
|
style
|
|
5986
6238
|
}) {
|
|
6239
|
+
const mac = platform === "auto" ? isMacPlatform() : platform === "mac";
|
|
5987
6240
|
return /*#__PURE__*/React.createElement("span", {
|
|
5988
6241
|
style: {
|
|
5989
6242
|
display: "inline-flex",
|
|
@@ -6008,7 +6261,7 @@ function Kbd({
|
|
|
6008
6261
|
fontSize: "var(--text-xs)",
|
|
6009
6262
|
color: "var(--text-secondary)"
|
|
6010
6263
|
}
|
|
6011
|
-
}, k)));
|
|
6264
|
+
}, resolveKbd(k, mac))));
|
|
6012
6265
|
}
|
|
6013
6266
|
Object.assign(__ds_scope, { Kbd });
|
|
6014
6267
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/display/Kbd.jsx", error: String((e && e.message) || e) }); }
|
|
@@ -6214,6 +6467,90 @@ function MiniBars({
|
|
|
6214
6467
|
Object.assign(__ds_scope, { ProgressBar, Donut, AreaChart, MiniBars });
|
|
6215
6468
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/display/ProgressBar.jsx", error: String((e && e.message) || e) }); }
|
|
6216
6469
|
|
|
6470
|
+
// components/feedback/modal-behavior.js
|
|
6471
|
+
try { (() => {
|
|
6472
|
+
/* Modal keyboard + focus behaviour, shared by Modal.jsx and Modal.vue (framework-neutral).
|
|
6473
|
+
While a dialog is open: focus moves into it ([data-autofocus] first, else the panel), Tab / Shift+Tab cycle inside it,
|
|
6474
|
+
Esc closes only the topmost dialog, the page behind stops scrolling (counted, so stacked dialogs unlock once),
|
|
6475
|
+
and on close focus returns to the element that had it. */
|
|
6476
|
+
const stack = [];
|
|
6477
|
+
let locks = 0,
|
|
6478
|
+
prevOverflow = "";
|
|
6479
|
+
const FOCUSABLE = 'button:not(:disabled), [href], input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])';
|
|
6480
|
+
|
|
6481
|
+
/** Call when the panel is in the DOM. Returns the cleanup to call on close / unmount. opts: { closeOnEsc, lockScroll, autoFocus, onEsc } */
|
|
6482
|
+
function modalOpen(panel, opts) {
|
|
6483
|
+
if (!panel || typeof document === "undefined") return () => {};
|
|
6484
|
+
const entry = {
|
|
6485
|
+
panel,
|
|
6486
|
+
opts
|
|
6487
|
+
};
|
|
6488
|
+
stack.push(entry);
|
|
6489
|
+
const top = () => stack[stack.length - 1] === entry;
|
|
6490
|
+
const prev = document.activeElement;
|
|
6491
|
+
if (opts.lockScroll !== false && locks++ === 0) {
|
|
6492
|
+
prevOverflow = document.body.style.overflow;
|
|
6493
|
+
document.body.style.overflow = "hidden";
|
|
6494
|
+
}
|
|
6495
|
+
const onKey = e => {
|
|
6496
|
+
if (!top()) return;
|
|
6497
|
+
if (e.key === "Escape") {
|
|
6498
|
+
if (e.isComposing) return;
|
|
6499
|
+
e.preventDefault();
|
|
6500
|
+
e.stopImmediatePropagation();
|
|
6501
|
+
if (entry.opts.closeOnEsc !== false && entry.opts.onEsc) entry.opts.onEsc(e);
|
|
6502
|
+
return;
|
|
6503
|
+
}
|
|
6504
|
+
if (e.key !== "Tab") return;
|
|
6505
|
+
const list = [...panel.querySelectorAll(FOCUSABLE)].filter(n => n.getClientRects().length);
|
|
6506
|
+
if (!list.length) {
|
|
6507
|
+
e.preventDefault();
|
|
6508
|
+
panel.focus();
|
|
6509
|
+
return;
|
|
6510
|
+
}
|
|
6511
|
+
const first = list[0],
|
|
6512
|
+
last = list[list.length - 1],
|
|
6513
|
+
at = document.activeElement;
|
|
6514
|
+
if (e.shiftKey && (at === first || !panel.contains(at))) {
|
|
6515
|
+
e.preventDefault();
|
|
6516
|
+
last.focus();
|
|
6517
|
+
} else if (!e.shiftKey && (at === last || !panel.contains(at))) {
|
|
6518
|
+
e.preventDefault();
|
|
6519
|
+
first.focus();
|
|
6520
|
+
}
|
|
6521
|
+
};
|
|
6522
|
+
const onFocusIn = e => {
|
|
6523
|
+
if (top() && !panel.contains(e.target)) panel.focus();
|
|
6524
|
+
};
|
|
6525
|
+
document.addEventListener("keydown", onKey, true);
|
|
6526
|
+
document.addEventListener("focusin", onFocusIn);
|
|
6527
|
+
if (opts.autoFocus !== false) {
|
|
6528
|
+
const a = panel.querySelector("[data-autofocus]");
|
|
6529
|
+
const t = a && (a.matches(FOCUSABLE) ? a : a.querySelector(FOCUSABLE)) || panel;
|
|
6530
|
+
try {
|
|
6531
|
+
t.focus({
|
|
6532
|
+
preventScroll: true
|
|
6533
|
+
});
|
|
6534
|
+
} catch (err) {
|
|
6535
|
+
t.focus();
|
|
6536
|
+
}
|
|
6537
|
+
if (t.select && t.tagName !== "BUTTON") t.select();
|
|
6538
|
+
}
|
|
6539
|
+
let done = false;
|
|
6540
|
+
return () => {
|
|
6541
|
+
if (done) return;
|
|
6542
|
+
done = true;
|
|
6543
|
+
document.removeEventListener("keydown", onKey, true);
|
|
6544
|
+
document.removeEventListener("focusin", onFocusIn);
|
|
6545
|
+
const i = stack.indexOf(entry);
|
|
6546
|
+
if (i >= 0) stack.splice(i, 1);
|
|
6547
|
+
if (opts.lockScroll !== false && --locks === 0) document.body.style.overflow = prevOverflow;
|
|
6548
|
+
if (prev && prev.isConnected && prev.focus) prev.focus();
|
|
6549
|
+
};
|
|
6550
|
+
}
|
|
6551
|
+
Object.assign(__ds_scope, { modalOpen });
|
|
6552
|
+
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/feedback/modal-behavior.js", error: String((e && e.message) || e) }); }
|
|
6553
|
+
|
|
6217
6554
|
// components/forms/Field.jsx
|
|
6218
6555
|
try { (() => {
|
|
6219
6556
|
/** Form field wrapper: label (tier control text, weight 500; red + * when required) above the control, optional hint/error below. `size` sets the tier for the whole field; `inline` puts the label beside the control for filter bars. */
|
|
@@ -6393,6 +6730,651 @@ function Slider({
|
|
|
6393
6730
|
Object.assign(__ds_scope, { Slider });
|
|
6394
6731
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Slider.jsx", error: String((e && e.message) || e) }); }
|
|
6395
6732
|
|
|
6733
|
+
// components/forms/global-search.js
|
|
6734
|
+
try { (() => {
|
|
6735
|
+
/* GlobalSearch — shared by GlobalSearch.jsx and GlobalSearch.vue: copy, matching, grouping, row model and styles.
|
|
6736
|
+
Lengths are strings so the same style objects work in React and Vue. */
|
|
6737
|
+
// registers --kb-ai-angle + kb-ai-spin for the Prophet AI tile
|
|
6738
|
+
|
|
6739
|
+
const GLOBAL_SEARCH_LABELS = {
|
|
6740
|
+
en: {
|
|
6741
|
+
field: "Search features, documents, or ask Prophet AI",
|
|
6742
|
+
input: "Search features, documents, data, or ask a question",
|
|
6743
|
+
ask: "Ask Prophet AI",
|
|
6744
|
+
clear: "Clear",
|
|
6745
|
+
scopes: ["All", "Features", "Documents", "Data", "Actions"],
|
|
6746
|
+
groups: {
|
|
6747
|
+
feature: "Features",
|
|
6748
|
+
document: "Documents",
|
|
6749
|
+
member: "Dimension Members",
|
|
6750
|
+
action: "Actions"
|
|
6751
|
+
},
|
|
6752
|
+
recentSearches: "Recent Searches",
|
|
6753
|
+
recent: "Recent",
|
|
6754
|
+
prompts: "Try Asking Prophet AI",
|
|
6755
|
+
viewAll: "View all {n}",
|
|
6756
|
+
results: "{n} results",
|
|
6757
|
+
searching: "Searching…",
|
|
6758
|
+
noResults: "No matches. Ask Prophet AI or try Deep Search.",
|
|
6759
|
+
askRow: "Ask Prophet AI: “{q}”",
|
|
6760
|
+
askSub: "Answers from documents, models and data you can access",
|
|
6761
|
+
deepRow: "Deep Search “{q}”",
|
|
6762
|
+
deepSub: "Multi-step search across document text, model data and logs you can access · about 1 min",
|
|
6763
|
+
deepTitle: "Deep Search: {q}",
|
|
6764
|
+
running: "Running · about 1 min",
|
|
6765
|
+
doneStatus: "Done · {t} · {n} citations",
|
|
6766
|
+
stepsDone: "Completed {n} steps",
|
|
6767
|
+
stepOf: "Step {i} of {n}",
|
|
6768
|
+
conclusion: "Conclusion",
|
|
6769
|
+
openReport: "Open Full Report",
|
|
6770
|
+
followUp: "Ask Follow-up",
|
|
6771
|
+
select: "Select",
|
|
6772
|
+
close: "Close / Back",
|
|
6773
|
+
privacy: "Reads only content you can access"
|
|
6774
|
+
},
|
|
6775
|
+
zh: {
|
|
6776
|
+
field: "搜索功能、文档,或问方知",
|
|
6777
|
+
input: "搜索功能、文档、数据,或直接提问",
|
|
6778
|
+
ask: "问方知",
|
|
6779
|
+
clear: "清除",
|
|
6780
|
+
scopes: ["全部", "功能", "文档", "数据", "操作"],
|
|
6781
|
+
groups: {
|
|
6782
|
+
feature: "功能",
|
|
6783
|
+
document: "文档",
|
|
6784
|
+
member: "维度成员",
|
|
6785
|
+
action: "操作"
|
|
6786
|
+
},
|
|
6787
|
+
recentSearches: "最近搜索",
|
|
6788
|
+
recent: "最近访问",
|
|
6789
|
+
prompts: "试试问方知",
|
|
6790
|
+
viewAll: "查看全部 {n}",
|
|
6791
|
+
results: "{n} 个结果",
|
|
6792
|
+
searching: "正在搜索…",
|
|
6793
|
+
noResults: "没有匹配的结果,可以问方知或使用深度搜索。",
|
|
6794
|
+
askRow: "问方知:“{q}”",
|
|
6795
|
+
askSub: "基于你有权限的文档、模型和数据作答",
|
|
6796
|
+
deepRow: "深度搜索“{q}”",
|
|
6797
|
+
deepSub: "在你有权限的文档正文、模型数据和日志中多步检索 · 约 1 分钟",
|
|
6798
|
+
deepTitle: "深度搜索:{q}",
|
|
6799
|
+
running: "进行中 · 约 1 分钟",
|
|
6800
|
+
doneStatus: "已完成 · {t} · {n} 条引用",
|
|
6801
|
+
stepsDone: "已完成 {n} 个步骤",
|
|
6802
|
+
stepOf: "第 {i} / {n} 步",
|
|
6803
|
+
conclusion: "结论",
|
|
6804
|
+
openReport: "打开完整报告",
|
|
6805
|
+
followUp: "就此追问",
|
|
6806
|
+
select: "选择",
|
|
6807
|
+
close: "关闭 / 返回",
|
|
6808
|
+
privacy: "仅读取你有权限的内容"
|
|
6809
|
+
}
|
|
6810
|
+
};
|
|
6811
|
+
const GS_KINDS = ["feature", "document", "member", "action"];
|
|
6812
|
+
const LIMITS = {
|
|
6813
|
+
feature: 4,
|
|
6814
|
+
document: 5,
|
|
6815
|
+
member: 3,
|
|
6816
|
+
action: 2
|
|
6817
|
+
};
|
|
6818
|
+
const GS_ICONS = {
|
|
6819
|
+
feature: "layout-grid",
|
|
6820
|
+
document: "file-text",
|
|
6821
|
+
member: "database",
|
|
6822
|
+
action: "zap"
|
|
6823
|
+
};
|
|
6824
|
+
const gsLabels = labels => ({
|
|
6825
|
+
...GLOBAL_SEARCH_LABELS.en,
|
|
6826
|
+
...labels,
|
|
6827
|
+
groups: {
|
|
6828
|
+
...GLOBAL_SEARCH_LABELS.en.groups,
|
|
6829
|
+
...(labels && labels.groups)
|
|
6830
|
+
}
|
|
6831
|
+
});
|
|
6832
|
+
const gsFill = (s, vars) => String(s).replace(/\{(\w+)\}/g, (_, k) => vars[k] != null ? vars[k] : "");
|
|
6833
|
+
const gsIsMac = () => typeof navigator !== "undefined" && /mac|iphone|ipad|ipod/i.test(navigator.userAgentData && navigator.userAgentData.platform || navigator.platform || navigator.userAgent || "");
|
|
6834
|
+
/** The OS's command modifier: ⌘ on macOS, Ctrl elsewhere. */
|
|
6835
|
+
const gsMod = (e, mac) => (mac ? e.metaKey : e.ctrlKey) && !e.altKey;
|
|
6836
|
+
|
|
6837
|
+
/** Case-insensitive substring on the title, falling back to keywords (path, kind, owner …). */
|
|
6838
|
+
function gsFilter(items, term) {
|
|
6839
|
+
const n = term.trim().toLowerCase();
|
|
6840
|
+
if (!n) return [];
|
|
6841
|
+
return items.filter(it => String(it.title).toLowerCase().includes(n) || (it.keywords || []).some(k => String(k).toLowerCase().includes(n)));
|
|
6842
|
+
}
|
|
6843
|
+
/** [before, match, after] for highlighting the matched substring of a title. */
|
|
6844
|
+
function gsSplit(title, term) {
|
|
6845
|
+
const t = String(title),
|
|
6846
|
+
n = (term || "").trim().toLowerCase(),
|
|
6847
|
+
i = n ? t.toLowerCase().indexOf(n) : -1;
|
|
6848
|
+
return i < 0 ? [t, "", ""] : [t.slice(0, i), t.slice(i, i + n.length), t.slice(i + n.length)];
|
|
6849
|
+
}
|
|
6850
|
+
|
|
6851
|
+
/** Every selectable row in visual order (↑↓ walks this list), with group headers attached to the first row of each group. */
|
|
6852
|
+
function gsRows({
|
|
6853
|
+
term,
|
|
6854
|
+
found,
|
|
6855
|
+
loading,
|
|
6856
|
+
scope,
|
|
6857
|
+
recent,
|
|
6858
|
+
prompts,
|
|
6859
|
+
deep,
|
|
6860
|
+
hasDeep,
|
|
6861
|
+
L
|
|
6862
|
+
}) {
|
|
6863
|
+
const rows = [];
|
|
6864
|
+
let total = 0;
|
|
6865
|
+
if (deep) return {
|
|
6866
|
+
rows,
|
|
6867
|
+
total
|
|
6868
|
+
};
|
|
6869
|
+
if (!term) {
|
|
6870
|
+
recent.forEach((item, j) => rows.push({
|
|
6871
|
+
kind: "recent",
|
|
6872
|
+
item,
|
|
6873
|
+
head: j === 0 ? {
|
|
6874
|
+
label: L.recent
|
|
6875
|
+
} : null
|
|
6876
|
+
}));
|
|
6877
|
+
prompts.forEach((text, j) => rows.push({
|
|
6878
|
+
kind: "prompt",
|
|
6879
|
+
text,
|
|
6880
|
+
head: j === 0 ? {
|
|
6881
|
+
label: L.prompts
|
|
6882
|
+
} : null
|
|
6883
|
+
}));
|
|
6884
|
+
} else {
|
|
6885
|
+
if (found && !loading) {
|
|
6886
|
+
const kinds = scope ? [GS_KINDS[scope - 1]] : GS_KINDS;
|
|
6887
|
+
kinds.forEach(k => {
|
|
6888
|
+
const all = found.filter(it => (it.kind || "feature") === k);
|
|
6889
|
+
total += all.length;
|
|
6890
|
+
const shown = scope ? all : all.slice(0, LIMITS[k]);
|
|
6891
|
+
shown.forEach((item, j) => rows.push({
|
|
6892
|
+
kind: "result",
|
|
6893
|
+
item,
|
|
6894
|
+
head: j === 0 ? {
|
|
6895
|
+
label: L.groups[k],
|
|
6896
|
+
more: !scope && all.length > shown.length ? {
|
|
6897
|
+
n: all.length,
|
|
6898
|
+
scope: GS_KINDS.indexOf(k) + 1
|
|
6899
|
+
} : null
|
|
6900
|
+
} : null
|
|
6901
|
+
}));
|
|
6902
|
+
});
|
|
6903
|
+
}
|
|
6904
|
+
rows.push({
|
|
6905
|
+
kind: "ask"
|
|
6906
|
+
});
|
|
6907
|
+
if (hasDeep) rows.push({
|
|
6908
|
+
kind: "deep"
|
|
6909
|
+
});
|
|
6910
|
+
}
|
|
6911
|
+
rows.forEach((r, i) => {
|
|
6912
|
+
r.i = i;
|
|
6913
|
+
});
|
|
6914
|
+
return {
|
|
6915
|
+
rows,
|
|
6916
|
+
total
|
|
6917
|
+
};
|
|
6918
|
+
}
|
|
6919
|
+
|
|
6920
|
+
/** Where the open card goes: 8px left of the collapsed field, 8px from the top, over the TopBar. */
|
|
6921
|
+
function gsPos(el) {
|
|
6922
|
+
const vw = window.innerWidth,
|
|
6923
|
+
vh = window.innerHeight,
|
|
6924
|
+
r = el ? el.getBoundingClientRect() : {
|
|
6925
|
+
left: 16
|
|
6926
|
+
};
|
|
6927
|
+
const width = Math.min(720, vw - 16);
|
|
6928
|
+
return {
|
|
6929
|
+
left: Math.max(8, Math.min(r.left - 8, vw - width - 8)),
|
|
6930
|
+
width,
|
|
6931
|
+
maxH: vh - 16
|
|
6932
|
+
};
|
|
6933
|
+
}
|
|
6934
|
+
/** Keep the selected row visible inside the scrolling body (no scrollIntoView). */
|
|
6935
|
+
function gsReveal(body, i) {
|
|
6936
|
+
if (!body) return;
|
|
6937
|
+
const el = body.querySelector('[data-gs-row="' + i + '"]');
|
|
6938
|
+
if (!el) return;
|
|
6939
|
+
const top = el.offsetTop - body.offsetTop,
|
|
6940
|
+
bottom = top + el.offsetHeight;
|
|
6941
|
+
if (top < body.scrollTop) body.scrollTop = top - 6;else if (bottom > body.scrollTop + body.clientHeight) body.scrollTop = bottom - body.clientHeight + 6;
|
|
6942
|
+
}
|
|
6943
|
+
const T = s => ({
|
|
6944
|
+
fontFamily: "var(--font-sans)",
|
|
6945
|
+
fontSize: "var(--text-" + s + ")",
|
|
6946
|
+
lineHeight: "var(--leading-" + s + ")",
|
|
6947
|
+
letterSpacing: "var(--tracking-" + s + ")"
|
|
6948
|
+
});
|
|
6949
|
+
const ONE = {
|
|
6950
|
+
whiteSpace: "nowrap",
|
|
6951
|
+
overflow: "hidden",
|
|
6952
|
+
textOverflow: "ellipsis"
|
|
6953
|
+
};
|
|
6954
|
+
const FADE = "opacity 300ms var(--ease-out)";
|
|
6955
|
+
const tileBase = {
|
|
6956
|
+
width: "32px",
|
|
6957
|
+
height: "32px",
|
|
6958
|
+
flexShrink: "0",
|
|
6959
|
+
display: "flex",
|
|
6960
|
+
alignItems: "center",
|
|
6961
|
+
justifyContent: "center",
|
|
6962
|
+
borderRadius: "var(--radius-md)",
|
|
6963
|
+
border: "1px solid var(--border-card)",
|
|
6964
|
+
background: "var(--bg-surface)",
|
|
6965
|
+
color: "var(--text-secondary)",
|
|
6966
|
+
boxSizing: "border-box"
|
|
6967
|
+
};
|
|
6968
|
+
const gsStyles = {
|
|
6969
|
+
/* Collapsed field: SearchInput's box (surface fill, --border-control hairline, r8). GlobalSearch exception: the placeholder is
|
|
6970
|
+
--text-secondary (≥4.5:1, it is the platform's main entry prompt) and hover also fills --bg-inset; border darkens via [data-field]. */
|
|
6971
|
+
field: hover => ({
|
|
6972
|
+
display: "inline-flex",
|
|
6973
|
+
alignItems: "center",
|
|
6974
|
+
gap: "8px",
|
|
6975
|
+
minWidth: "400px",
|
|
6976
|
+
width: "max-content",
|
|
6977
|
+
maxWidth: "100%",
|
|
6978
|
+
height: "32px",
|
|
6979
|
+
padding: "0 6px 0 10px",
|
|
6980
|
+
boxSizing: "border-box",
|
|
6981
|
+
borderRadius: "var(--radius-md)",
|
|
6982
|
+
background: hover ? "var(--bg-inset)" : "var(--bg-surface)",
|
|
6983
|
+
border: "1px solid var(--field-border, var(--border-control))",
|
|
6984
|
+
cursor: "pointer",
|
|
6985
|
+
transition: "var(--t-hover)",
|
|
6986
|
+
...T("base"),
|
|
6987
|
+
color: "var(--text-secondary)",
|
|
6988
|
+
textAlign: "left",
|
|
6989
|
+
flexShrink: "1"
|
|
6990
|
+
}),
|
|
6991
|
+
fieldIcon: {
|
|
6992
|
+
display: "inline-flex",
|
|
6993
|
+
color: "var(--text-muted)",
|
|
6994
|
+
flexShrink: "0"
|
|
6995
|
+
},
|
|
6996
|
+
fieldLabel: {
|
|
6997
|
+
flex: "1 0 auto",
|
|
6998
|
+
paddingRight: "8px",
|
|
6999
|
+
whiteSpace: "nowrap"
|
|
7000
|
+
},
|
|
7001
|
+
scrim: {
|
|
7002
|
+
position: "fixed",
|
|
7003
|
+
inset: "0",
|
|
7004
|
+
background: "var(--bg-scrim)",
|
|
7005
|
+
zIndex: "var(--z-modal)",
|
|
7006
|
+
animation: "kb-fade-in var(--dur) var(--ease-out)"
|
|
7007
|
+
},
|
|
7008
|
+
card: {
|
|
7009
|
+
display: "flex",
|
|
7010
|
+
flexDirection: "column",
|
|
7011
|
+
width: "720px",
|
|
7012
|
+
maxWidth: "100%",
|
|
7013
|
+
background: "var(--bg-raised)",
|
|
7014
|
+
border: "1px solid var(--border-card)",
|
|
7015
|
+
borderRadius: "var(--radius-lg)",
|
|
7016
|
+
boxShadow: "var(--shadow-modal)",
|
|
7017
|
+
overflow: "hidden",
|
|
7018
|
+
boxSizing: "border-box",
|
|
7019
|
+
color: "var(--text-body)",
|
|
7020
|
+
textAlign: "left"
|
|
7021
|
+
},
|
|
7022
|
+
cardFixed: p => ({
|
|
7023
|
+
position: "fixed",
|
|
7024
|
+
top: "8px",
|
|
7025
|
+
left: p.left + "px",
|
|
7026
|
+
width: p.width + "px",
|
|
7027
|
+
maxHeight: p.maxH + "px",
|
|
7028
|
+
zIndex: "var(--z-modal)",
|
|
7029
|
+
animation: "kb-rise var(--dur-slow) var(--ease-out)"
|
|
7030
|
+
}),
|
|
7031
|
+
inputRow: {
|
|
7032
|
+
display: "flex",
|
|
7033
|
+
alignItems: "center",
|
|
7034
|
+
gap: "10px",
|
|
7035
|
+
height: "56px",
|
|
7036
|
+
padding: "0 16px",
|
|
7037
|
+
borderBottom: "1px solid var(--border-subtle)",
|
|
7038
|
+
flexShrink: "0",
|
|
7039
|
+
boxSizing: "border-box"
|
|
7040
|
+
},
|
|
7041
|
+
lead: {
|
|
7042
|
+
display: "inline-flex",
|
|
7043
|
+
width: "16px",
|
|
7044
|
+
height: "16px",
|
|
7045
|
+
alignItems: "center",
|
|
7046
|
+
justifyContent: "center",
|
|
7047
|
+
color: "var(--text-secondary)",
|
|
7048
|
+
flexShrink: "0"
|
|
7049
|
+
},
|
|
7050
|
+
input: {
|
|
7051
|
+
flex: "1 1 auto",
|
|
7052
|
+
minWidth: "0",
|
|
7053
|
+
border: "none",
|
|
7054
|
+
outline: "none",
|
|
7055
|
+
background: "transparent",
|
|
7056
|
+
padding: "0",
|
|
7057
|
+
...T("md"),
|
|
7058
|
+
color: "var(--text-heading)"
|
|
7059
|
+
},
|
|
7060
|
+
trail: {
|
|
7061
|
+
display: "flex",
|
|
7062
|
+
alignItems: "center",
|
|
7063
|
+
gap: "8px",
|
|
7064
|
+
flexShrink: "0"
|
|
7065
|
+
},
|
|
7066
|
+
scope: {
|
|
7067
|
+
display: "flex",
|
|
7068
|
+
alignItems: "center",
|
|
7069
|
+
justifyContent: "space-between",
|
|
7070
|
+
gap: "12px",
|
|
7071
|
+
padding: "10px 16px",
|
|
7072
|
+
borderBottom: "1px solid var(--border-subtle)",
|
|
7073
|
+
flexShrink: "0"
|
|
7074
|
+
},
|
|
7075
|
+
count: {
|
|
7076
|
+
...T("xs"),
|
|
7077
|
+
color: "var(--text-muted)",
|
|
7078
|
+
whiteSpace: "nowrap"
|
|
7079
|
+
},
|
|
7080
|
+
body: {
|
|
7081
|
+
flex: "1 1 auto",
|
|
7082
|
+
minHeight: "0",
|
|
7083
|
+
overflowY: "auto",
|
|
7084
|
+
padding: "6px",
|
|
7085
|
+
position: "relative"
|
|
7086
|
+
},
|
|
7087
|
+
head: {
|
|
7088
|
+
display: "flex",
|
|
7089
|
+
alignItems: "center",
|
|
7090
|
+
justifyContent: "space-between",
|
|
7091
|
+
gap: "8px",
|
|
7092
|
+
padding: "8px 10px 4px",
|
|
7093
|
+
...T("xs"),
|
|
7094
|
+
fontWeight: "var(--weight-medium)",
|
|
7095
|
+
color: "var(--text-muted)"
|
|
7096
|
+
},
|
|
7097
|
+
more: {
|
|
7098
|
+
border: "none",
|
|
7099
|
+
background: "transparent",
|
|
7100
|
+
padding: "0",
|
|
7101
|
+
cursor: "pointer",
|
|
7102
|
+
...T("xs"),
|
|
7103
|
+
color: "var(--link)"
|
|
7104
|
+
},
|
|
7105
|
+
row: on => ({
|
|
7106
|
+
display: "flex",
|
|
7107
|
+
alignItems: "center",
|
|
7108
|
+
gap: "10px",
|
|
7109
|
+
minHeight: "44px",
|
|
7110
|
+
padding: "6px 10px",
|
|
7111
|
+
boxSizing: "border-box",
|
|
7112
|
+
borderRadius: "var(--radius-md)",
|
|
7113
|
+
background: on ? "var(--bg-hover)" : "transparent",
|
|
7114
|
+
cursor: "pointer"
|
|
7115
|
+
}),
|
|
7116
|
+
tile: tone => ({
|
|
7117
|
+
...tileBase,
|
|
7118
|
+
...(tone ? {
|
|
7119
|
+
background: "var(--cat-" + tone + "-bg)",
|
|
7120
|
+
color: "var(--cat-" + tone + ")"
|
|
7121
|
+
} : null)
|
|
7122
|
+
}),
|
|
7123
|
+
text: {
|
|
7124
|
+
display: "flex",
|
|
7125
|
+
flexDirection: "column",
|
|
7126
|
+
minWidth: "0",
|
|
7127
|
+
flex: "1 1 auto"
|
|
7128
|
+
},
|
|
7129
|
+
title: {
|
|
7130
|
+
...T("base"),
|
|
7131
|
+
...ONE,
|
|
7132
|
+
color: "var(--text-heading)"
|
|
7133
|
+
},
|
|
7134
|
+
mark: {
|
|
7135
|
+
color: "var(--action-primary)",
|
|
7136
|
+
fontWeight: "var(--weight-medium)"
|
|
7137
|
+
},
|
|
7138
|
+
sub: {
|
|
7139
|
+
...T("xs"),
|
|
7140
|
+
...ONE,
|
|
7141
|
+
color: "var(--text-secondary)"
|
|
7142
|
+
},
|
|
7143
|
+
meta: {
|
|
7144
|
+
...T("xs"),
|
|
7145
|
+
color: "var(--text-muted)",
|
|
7146
|
+
whiteSpace: "nowrap",
|
|
7147
|
+
flexShrink: "0"
|
|
7148
|
+
},
|
|
7149
|
+
chips: {
|
|
7150
|
+
display: "flex",
|
|
7151
|
+
flexWrap: "wrap",
|
|
7152
|
+
gap: "8px",
|
|
7153
|
+
padding: "4px 10px 8px"
|
|
7154
|
+
},
|
|
7155
|
+
chip: {
|
|
7156
|
+
display: "inline-flex",
|
|
7157
|
+
alignItems: "center",
|
|
7158
|
+
gap: "6px",
|
|
7159
|
+
height: "28px",
|
|
7160
|
+
padding: "0 10px",
|
|
7161
|
+
borderRadius: "var(--radius-md)",
|
|
7162
|
+
border: "1px solid var(--border-control)",
|
|
7163
|
+
background: "var(--bg-surface)",
|
|
7164
|
+
cursor: "pointer",
|
|
7165
|
+
...T("xs"),
|
|
7166
|
+
color: "var(--text-body)",
|
|
7167
|
+
boxSizing: "border-box"
|
|
7168
|
+
},
|
|
7169
|
+
chipIcon: {
|
|
7170
|
+
display: "inline-flex",
|
|
7171
|
+
color: "var(--text-muted)"
|
|
7172
|
+
},
|
|
7173
|
+
empty: {
|
|
7174
|
+
padding: "12px 10px",
|
|
7175
|
+
...T("base"),
|
|
7176
|
+
color: "var(--text-secondary)"
|
|
7177
|
+
},
|
|
7178
|
+
skelRow: {
|
|
7179
|
+
display: "flex",
|
|
7180
|
+
alignItems: "center",
|
|
7181
|
+
gap: "10px",
|
|
7182
|
+
minHeight: "44px",
|
|
7183
|
+
padding: "6px 10px",
|
|
7184
|
+
boxSizing: "border-box"
|
|
7185
|
+
},
|
|
7186
|
+
skelText: {
|
|
7187
|
+
display: "flex",
|
|
7188
|
+
flexDirection: "column",
|
|
7189
|
+
gap: "6px",
|
|
7190
|
+
flex: "1 1 auto"
|
|
7191
|
+
},
|
|
7192
|
+
pinned: {
|
|
7193
|
+
borderTop: "1px solid var(--border-subtle)",
|
|
7194
|
+
padding: "6px",
|
|
7195
|
+
flexShrink: "0"
|
|
7196
|
+
},
|
|
7197
|
+
footer: {
|
|
7198
|
+
display: "flex",
|
|
7199
|
+
alignItems: "center",
|
|
7200
|
+
justifyContent: "space-between",
|
|
7201
|
+
gap: "16px",
|
|
7202
|
+
height: "36px",
|
|
7203
|
+
padding: "0 16px",
|
|
7204
|
+
borderTop: "1px solid var(--border-subtle)",
|
|
7205
|
+
background: "var(--bg-surface)",
|
|
7206
|
+
flexShrink: "0",
|
|
7207
|
+
boxSizing: "border-box",
|
|
7208
|
+
...T("xs"),
|
|
7209
|
+
color: "var(--text-secondary)",
|
|
7210
|
+
whiteSpace: "nowrap"
|
|
7211
|
+
},
|
|
7212
|
+
hints: {
|
|
7213
|
+
display: "flex",
|
|
7214
|
+
alignItems: "center",
|
|
7215
|
+
gap: "16px"
|
|
7216
|
+
},
|
|
7217
|
+
hint: {
|
|
7218
|
+
display: "inline-flex",
|
|
7219
|
+
alignItems: "center",
|
|
7220
|
+
gap: "6px"
|
|
7221
|
+
},
|
|
7222
|
+
deep: {
|
|
7223
|
+
display: "flex",
|
|
7224
|
+
flexDirection: "column",
|
|
7225
|
+
gap: "12px",
|
|
7226
|
+
padding: "12px 16px"
|
|
7227
|
+
},
|
|
7228
|
+
deepHead: {
|
|
7229
|
+
display: "flex",
|
|
7230
|
+
alignItems: "center",
|
|
7231
|
+
gap: "10px"
|
|
7232
|
+
},
|
|
7233
|
+
deepTitle: {
|
|
7234
|
+
...T("base"),
|
|
7235
|
+
...ONE,
|
|
7236
|
+
fontWeight: "var(--weight-medium)",
|
|
7237
|
+
color: "var(--text-heading)"
|
|
7238
|
+
},
|
|
7239
|
+
steps: {
|
|
7240
|
+
display: "flex",
|
|
7241
|
+
flexDirection: "column",
|
|
7242
|
+
gap: "2px"
|
|
7243
|
+
},
|
|
7244
|
+
toggle: {
|
|
7245
|
+
display: "flex",
|
|
7246
|
+
alignItems: "center",
|
|
7247
|
+
gap: "8px",
|
|
7248
|
+
width: "100%",
|
|
7249
|
+
minHeight: "28px",
|
|
7250
|
+
padding: "0 6px",
|
|
7251
|
+
borderRadius: "var(--radius-md)",
|
|
7252
|
+
border: "none",
|
|
7253
|
+
background: "var(--wash, transparent)",
|
|
7254
|
+
cursor: "pointer",
|
|
7255
|
+
...T("xs"),
|
|
7256
|
+
color: "var(--text-body)",
|
|
7257
|
+
textAlign: "left",
|
|
7258
|
+
boxSizing: "border-box"
|
|
7259
|
+
},
|
|
7260
|
+
stepLine: {
|
|
7261
|
+
display: "flex",
|
|
7262
|
+
alignItems: "center",
|
|
7263
|
+
gap: "8px",
|
|
7264
|
+
minHeight: "24px",
|
|
7265
|
+
padding: "0 6px",
|
|
7266
|
+
...T("xs")
|
|
7267
|
+
},
|
|
7268
|
+
stepIcon: {
|
|
7269
|
+
width: "14px",
|
|
7270
|
+
height: "14px",
|
|
7271
|
+
display: "inline-flex",
|
|
7272
|
+
alignItems: "center",
|
|
7273
|
+
justifyContent: "center",
|
|
7274
|
+
flexShrink: "0"
|
|
7275
|
+
},
|
|
7276
|
+
pending: {
|
|
7277
|
+
width: "8px",
|
|
7278
|
+
height: "8px",
|
|
7279
|
+
borderRadius: "var(--radius-full)",
|
|
7280
|
+
border: "1.5px solid var(--border-strong)",
|
|
7281
|
+
boxSizing: "border-box"
|
|
7282
|
+
},
|
|
7283
|
+
muted: {
|
|
7284
|
+
color: "var(--text-muted)"
|
|
7285
|
+
},
|
|
7286
|
+
grow: {
|
|
7287
|
+
flex: "1 1 auto"
|
|
7288
|
+
},
|
|
7289
|
+
conclusion: {
|
|
7290
|
+
display: "flex",
|
|
7291
|
+
flexDirection: "column",
|
|
7292
|
+
gap: "6px",
|
|
7293
|
+
padding: "12px 14px",
|
|
7294
|
+
borderRadius: "var(--radius-lg)",
|
|
7295
|
+
background: "var(--bg-inset)",
|
|
7296
|
+
border: "1px solid var(--border-card)"
|
|
7297
|
+
},
|
|
7298
|
+
concLabel: {
|
|
7299
|
+
...T("xs"),
|
|
7300
|
+
fontWeight: "var(--weight-medium)",
|
|
7301
|
+
color: "var(--text-secondary)"
|
|
7302
|
+
},
|
|
7303
|
+
concText: {
|
|
7304
|
+
display: "flex",
|
|
7305
|
+
flexDirection: "column",
|
|
7306
|
+
gap: "4px",
|
|
7307
|
+
...T("base"),
|
|
7308
|
+
color: "var(--text-body)",
|
|
7309
|
+
textWrap: "pretty"
|
|
7310
|
+
},
|
|
7311
|
+
sources: {
|
|
7312
|
+
display: "flex",
|
|
7313
|
+
flexWrap: "wrap",
|
|
7314
|
+
gap: "6px"
|
|
7315
|
+
},
|
|
7316
|
+
source: {
|
|
7317
|
+
display: "inline-flex",
|
|
7318
|
+
alignItems: "center",
|
|
7319
|
+
gap: "4px",
|
|
7320
|
+
height: "24px",
|
|
7321
|
+
padding: "0 8px",
|
|
7322
|
+
borderRadius: "var(--radius-sm)",
|
|
7323
|
+
border: "1px solid var(--border-control)",
|
|
7324
|
+
background: "var(--bg-surface)",
|
|
7325
|
+
...T("xs"),
|
|
7326
|
+
color: "var(--text-body)",
|
|
7327
|
+
boxSizing: "border-box",
|
|
7328
|
+
whiteSpace: "nowrap"
|
|
7329
|
+
},
|
|
7330
|
+
actions: {
|
|
7331
|
+
display: "flex",
|
|
7332
|
+
gap: "8px",
|
|
7333
|
+
marginTop: "6px"
|
|
7334
|
+
}
|
|
7335
|
+
};
|
|
7336
|
+
|
|
7337
|
+
/** The 32px Prophet AI tile: hairline tile at rest; selected, it takes the AI hover language (tint, gradient ring at hover speed, gradient glyph), never a glow. */
|
|
7338
|
+
function gsAiTile(on) {
|
|
7339
|
+
return {
|
|
7340
|
+
outer: {
|
|
7341
|
+
width: "32px",
|
|
7342
|
+
height: "32px",
|
|
7343
|
+
flexShrink: "0",
|
|
7344
|
+
display: "flex",
|
|
7345
|
+
padding: "1px",
|
|
7346
|
+
boxSizing: "border-box",
|
|
7347
|
+
borderRadius: "var(--radius-md)",
|
|
7348
|
+
background: on ? "conic-gradient(from var(--kb-ai-angle), var(--ai-gradient-stops))" : "var(--border-card)",
|
|
7349
|
+
animation: on ? "kb-ai-spin var(--ai-spin-hover) linear infinite" : "none"
|
|
7350
|
+
},
|
|
7351
|
+
inner: {
|
|
7352
|
+
position: "relative",
|
|
7353
|
+
flex: "1 1 auto",
|
|
7354
|
+
display: "flex",
|
|
7355
|
+
alignItems: "center",
|
|
7356
|
+
justifyContent: "center",
|
|
7357
|
+
borderRadius: "calc(var(--radius-md) - 1px)",
|
|
7358
|
+
background: "var(--bg-surface)",
|
|
7359
|
+
overflow: "hidden",
|
|
7360
|
+
color: "var(--text-secondary)"
|
|
7361
|
+
},
|
|
7362
|
+
tint: {
|
|
7363
|
+
position: "absolute",
|
|
7364
|
+
inset: "0",
|
|
7365
|
+
pointerEvents: "none",
|
|
7366
|
+
background: "linear-gradient(90deg, color-mix(in srgb, var(--ai-gradient-start) var(--ai-tint), transparent), color-mix(in srgb, var(--ai-gradient-end) var(--ai-tint), transparent))",
|
|
7367
|
+
opacity: on ? "1" : "0",
|
|
7368
|
+
transition: FADE
|
|
7369
|
+
},
|
|
7370
|
+
icon: {
|
|
7371
|
+
position: "relative"
|
|
7372
|
+
}
|
|
7373
|
+
};
|
|
7374
|
+
}
|
|
7375
|
+
Object.assign(__ds_scope, { GLOBAL_SEARCH_LABELS, GS_KINDS, GS_ICONS, gsLabels, gsFill, gsIsMac, gsMod, gsFilter, gsSplit, gsRows, gsPos, gsReveal, gsStyles, gsAiTile });
|
|
7376
|
+
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/global-search.js", error: String((e && e.message) || e) }); }
|
|
7377
|
+
|
|
6396
7378
|
// components/forms/input-base.js
|
|
6397
7379
|
try { (() => {
|
|
6398
7380
|
// Shared base style for text-like controls (Input, Textarea, Combobox, DatePicker).
|
|
@@ -7088,8 +8070,8 @@ const ICON_PATHS = {
|
|
|
7088
8070
|
"time-future": '<path d="M20 6A10 10 0 1 0 22 12"/><path d="M12 7v5h5"/><path d="M21 2v5h-5"/>',
|
|
7089
8071
|
"time-restatement": '<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l4 2"/>',
|
|
7090
8072
|
// AI glyphs (2.3.0) — traced from the two reference glyphs, redrawn to core rules (stroke 2, no fill, integer endpoints, >=4 between separate elements)
|
|
7091
|
-
ai: '<path d="M9
|
|
7092
|
-
"ai-sparkles": '<path d="M9
|
|
8073
|
+
ai: '<path d="M9 3H7a4 4 0 0 0-4 4v10a4 4 0 0 0 4 4h10a4 4 0 0 0 4-4v-2"/><path d="M16 2c.72 3.6 2.4 5.28 6 6c-3.6.72-5.28 2.4-6 6c-.72-3.6-2.4-5.28-6-6c3.6-.72 5.28-2.4 6-6Z"/><path d="M9 12c.6 1.5 1.5 2.4 3 3c-1.5.6-2.4 1.5-3 3c-.6-1.5-1.5-2.4-3-3c1.5-.6 2.4-1.5 3-3Z"/>',
|
|
8074
|
+
"ai-sparkles": '<path d="M9 2c.84 4.2 2.8 6.16 7 7c-4.2.84-6.16 2.8-7 7c-.84-4.2-2.8-6.16-7-7c4.2-.84 6.16-2.8 7-7Z"/><path d="M17 13c.8 2 2 3.2 4 4c-2 .8-3.2 2-4 4c-.8-2-2-3.2-4-4c2-.8 3.2-2 4-4Z"/>',
|
|
7093
8075
|
// Keybricks business glyphs (2.4.6) — dimensions, modules, rules-*, task-*; drawn to core rules or taken from Lucide
|
|
7094
8076
|
"dimension-account": '<path d="M12 7v14"/><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/><path d="M5 8h3"/><path d="M5 11h3"/><path d="M5 14h3"/><path d="M17 6.5v1"/><path d="M17 12.5v1"/><path d="M18.5 7.5h-2a1.25 1.25 0 0 0 0 2.5h1a1.25 1.25 0 0 1 0 2.5h-2"/>',
|
|
7095
8077
|
"dimension-audit": '<path d="M11.1 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.589 3.588A2.4 2.4 0 0 1 20 8v3.25"/><path d="M14 2v5a1 1 0 0 0 1 1h5"/><path d="m21 22-2.88-2.88"/><circle cx="16" cy="17" r="3"/>',
|
|
@@ -7166,24 +8148,32 @@ const ICON_PATHS = {
|
|
|
7166
8148
|
"task-etl": '<rect width="8" height="4" x="8" y="2" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><ellipse cx="12" cy="10.5" rx="3.5" ry="1.5"/><path d="M8.5 10.5v6c0 .83 1.57 1.5 3.5 1.5s3.5-.67 3.5-1.5v-6"/><path d="M8.5 13.5c0 .83 1.57 1.5 3.5 1.5s3.5-.67 3.5-1.5"/>',
|
|
7167
8149
|
"task-shared": '<rect width="8" height="4" x="8" y="2" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><g transform="translate(-.5 4)"><circle cx="15.3" cy="6.8" r=".75"/><circle cx="9.7" cy="10" r=".75"/><circle cx="15.3" cy="13.2" r=".75"/><path d="m11.35 9.06 2.3-1.32"/><path d="m11.35 10.94 2.3 1.32"/></g>',
|
|
7168
8150
|
"task-intercompany": '<rect width="8" height="4" x="8" y="2" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><g transform="translate(-.5 4)"><path d="M8.5 14V6.5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1V14"/><path d="M13.5 9.5H16a1 1 0 0 1 1 1V14"/><path d="M7.5 14h10"/><path d="M11 8.5h.01"/><path d="M11 11h.01"/></g>',
|
|
7169
|
-
ownership: '<path d="M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17"/><path d="m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9"/><path d="m2 16 6 6"/><circle cx="9" cy="5" r="3"/><path d="M12 5h9"/><path d="M18 5v2.5"/><path d="M21 5v2"/>'
|
|
8151
|
+
ownership: '<path d="M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17"/><path d="m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9"/><path d="m2 16 6 6"/><circle cx="9" cy="5" r="3"/><path d="M12 5h9"/><path d="M18 5v2.5"/><path d="M21 5v2"/>',
|
|
8152
|
+
prophet: '<path d="M5.66 13.5A7.5 7.5 0 1 1 18.34 13.5"/><path d="M8.5 10a3.5 3.5 0 0 1 7 0v1.5c0 3.2-1.5 5.6-3.5 7.5c-2-1.9-3.5-4.3-3.5-7.5Z"/><path d="M8.71 13.5c1.05.95 2.15 1.4 3.29 1.4s2.24-.45 3.29-1.4"/><path d="M3.5 22a5.5 5.5 0 0 1 4-5.3"/><path d="M20.5 22a5.5 5.5 0 0 0-4-5.3"/>',
|
|
8153
|
+
"prophet-sparkle": '<path d="M5.66 13.5A7.5 7.5 0 0 1 13.24 2.1"/><path d="M19 2c.36 1.8 1.2 2.64 3 3c-1.8.36-2.64 1.2-3 3c-.36-1.8-1.2-2.64-3-3c1.8-.36 2.64-1.2 3-3Z"/><path d="M8.5 10a3.5 3.5 0 0 1 7 0v1.5c0 3.2-1.5 5.6-3.5 7.5c-2-1.9-3.5-4.3-3.5-7.5Z"/><path d="M8.71 13.5c1.05.95 2.15 1.4 3.29 1.4s2.24-.45 3.29-1.4"/><path d="M3.5 22a5.5 5.5 0 0 1 4-5.3"/><path d="M20.5 22a5.5 5.5 0 0 0-4-5.3"/>'
|
|
7170
8154
|
};
|
|
7171
|
-
/**
|
|
8155
|
+
/** Stroke gradient for the AI glyph treatment — bottom-left start to top-right end, in glyph space so every path shares it. */
|
|
8156
|
+
const iconGradientDefs = (id, from = "var(--ai-gradient-start)", to = "var(--ai-gradient-end)") => '<defs><linearGradient id="' + id + '" gradientUnits="userSpaceOnUse" x1="2" y1="22" x2="22" y2="2"><stop offset="0" style="stop-color:' + from + '"/><stop offset="1" style="stop-color:' + to + '"/></linearGradient></defs>';
|
|
8157
|
+
|
|
8158
|
+
/** Lucide-style stroke icon. name: key of ICON_PATHS (core set) or any Feather icon name (feather-paths.js fallback); size in px; strokeWidth defaults to 2 (24-grid). gradient: true strokes it with the AI gradient (Prophet AI entry points only), or pass [from, to]. Browse both sets with keywords in the Icon Gallery card. */
|
|
7172
8159
|
function Icon({
|
|
7173
8160
|
name,
|
|
7174
8161
|
size = 16,
|
|
7175
8162
|
strokeWidth = 2,
|
|
7176
8163
|
color,
|
|
8164
|
+
gradient,
|
|
7177
8165
|
style,
|
|
7178
8166
|
className
|
|
7179
8167
|
}) {
|
|
7180
|
-
const
|
|
8168
|
+
const gid = "kb-ig" + React.useId().replace(/[^a-zA-Z0-9]/g, "");
|
|
8169
|
+
let body = ICON_PATHS[name] || __ds_scope.FEATHER_PATHS[name] || "";
|
|
8170
|
+
if (gradient) body = (Array.isArray(gradient) ? iconGradientDefs(gid, gradient[0], gradient[1]) : iconGradientDefs(gid)) + body;
|
|
7181
8171
|
return /*#__PURE__*/React.createElement("svg", {
|
|
7182
8172
|
width: size,
|
|
7183
8173
|
height: size,
|
|
7184
8174
|
viewBox: "0 0 24 24",
|
|
7185
8175
|
fill: "none",
|
|
7186
|
-
stroke: "currentColor",
|
|
8176
|
+
stroke: gradient ? "url(#" + gid + ")" : "currentColor",
|
|
7187
8177
|
strokeWidth: strokeWidth,
|
|
7188
8178
|
strokeLinecap: "round",
|
|
7189
8179
|
strokeLinejoin: "round",
|
|
@@ -7199,7 +8189,7 @@ function Icon({
|
|
|
7199
8189
|
}
|
|
7200
8190
|
});
|
|
7201
8191
|
}
|
|
7202
|
-
Object.assign(__ds_scope, { ICON_PATHS, Icon });
|
|
8192
|
+
Object.assign(__ds_scope, { ICON_PATHS, iconGradientDefs, Icon });
|
|
7203
8193
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/icons/Icon.jsx", error: String((e && e.message) || e) }); }
|
|
7204
8194
|
|
|
7205
8195
|
// components/buttons/Button.jsx
|
|
@@ -7312,11 +8302,120 @@ function Spinner({
|
|
|
7312
8302
|
});
|
|
7313
8303
|
}
|
|
7314
8304
|
|
|
7315
|
-
/**
|
|
8305
|
+
/** variant="ai" — Prophet AI (方知) entry points only. Same box as any Button at the tier; see ai-button.js. */
|
|
8306
|
+
function AiButton({
|
|
8307
|
+
size,
|
|
8308
|
+
icon,
|
|
8309
|
+
trailing,
|
|
8310
|
+
nativeType,
|
|
8311
|
+
iconSize,
|
|
8312
|
+
medium,
|
|
8313
|
+
fullWidth,
|
|
8314
|
+
iconOnly,
|
|
8315
|
+
label,
|
|
8316
|
+
busy,
|
|
8317
|
+
loading,
|
|
8318
|
+
hovered,
|
|
8319
|
+
isPressed,
|
|
8320
|
+
isFocused,
|
|
8321
|
+
setHover,
|
|
8322
|
+
setPress,
|
|
8323
|
+
setFocus,
|
|
8324
|
+
children,
|
|
8325
|
+
style,
|
|
8326
|
+
onClick,
|
|
8327
|
+
rest
|
|
8328
|
+
}) {
|
|
8329
|
+
if (typeof icon !== "string" || !icon) icon = "prophet-sparkle";
|
|
8330
|
+
const ref = React.useRef(null);
|
|
8331
|
+
const delay = React.useRef(__ds_scope.aiSpinDelay()).current;
|
|
8332
|
+
const on = !busy && hovered;
|
|
8333
|
+
React.useEffect(() => __ds_scope.rampAiSpin(ref.current, on), [on]);
|
|
8334
|
+
const a = __ds_scope.aiStyles({
|
|
8335
|
+
on,
|
|
8336
|
+
press: !busy && isPressed,
|
|
8337
|
+
busy,
|
|
8338
|
+
focused: isFocused,
|
|
8339
|
+
medium,
|
|
8340
|
+
fullWidth,
|
|
8341
|
+
iconOnly,
|
|
8342
|
+
delay,
|
|
8343
|
+
style
|
|
8344
|
+
});
|
|
8345
|
+
const sz = iconSize || 16,
|
|
8346
|
+
tier = iconSize ? null : tierIcon;
|
|
8347
|
+
return /*#__PURE__*/React.createElement("button", _extends({
|
|
8348
|
+
ref: ref,
|
|
8349
|
+
type: nativeType,
|
|
8350
|
+
"data-press": "own",
|
|
8351
|
+
"data-size": size,
|
|
8352
|
+
style: a.outer,
|
|
8353
|
+
disabled: busy,
|
|
8354
|
+
"aria-busy": loading || undefined,
|
|
8355
|
+
"aria-label": iconOnly ? label : undefined,
|
|
8356
|
+
onClick: onClick,
|
|
8357
|
+
onMouseEnter: () => setHover(true),
|
|
8358
|
+
onMouseLeave: () => {
|
|
8359
|
+
setHover(false);
|
|
8360
|
+
setPress(false);
|
|
8361
|
+
},
|
|
8362
|
+
onMouseDown: () => setPress(true),
|
|
8363
|
+
onMouseUp: () => setPress(false),
|
|
8364
|
+
onKeyDown: e => {
|
|
8365
|
+
if (e.key === " " || e.key === "Enter") setPress(true);
|
|
8366
|
+
},
|
|
8367
|
+
onKeyUp: () => setPress(false),
|
|
8368
|
+
onFocus: e => {
|
|
8369
|
+
try {
|
|
8370
|
+
setFocus(e.target.matches(":focus-visible"));
|
|
8371
|
+
} catch (err) {
|
|
8372
|
+
setFocus(true);
|
|
8373
|
+
}
|
|
8374
|
+
},
|
|
8375
|
+
onBlur: () => setFocus(false)
|
|
8376
|
+
}, rest), /*#__PURE__*/React.createElement("span", {
|
|
8377
|
+
"aria-hidden": "true",
|
|
8378
|
+
style: a.glow
|
|
8379
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
8380
|
+
"aria-hidden": "true",
|
|
8381
|
+
style: a.ring
|
|
8382
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
8383
|
+
style: a.surface
|
|
8384
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
8385
|
+
"aria-hidden": "true",
|
|
8386
|
+
style: a.tint
|
|
8387
|
+
}), loading ? /*#__PURE__*/React.createElement("span", {
|
|
8388
|
+
style: a.iconBox
|
|
8389
|
+
}, /*#__PURE__*/React.createElement(Spinner, {
|
|
8390
|
+
size: iconSize
|
|
8391
|
+
})) : icon ? /*#__PURE__*/React.createElement("span", {
|
|
8392
|
+
style: a.iconBox
|
|
8393
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
8394
|
+
name: icon,
|
|
8395
|
+
size: sz,
|
|
8396
|
+
style: {
|
|
8397
|
+
...tier,
|
|
8398
|
+
...a.iconRest
|
|
8399
|
+
}
|
|
8400
|
+
}), /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
8401
|
+
name: icon,
|
|
8402
|
+
size: sz,
|
|
8403
|
+
gradient: true,
|
|
8404
|
+
style: {
|
|
8405
|
+
...tier,
|
|
8406
|
+
...a.iconGrad
|
|
8407
|
+
}
|
|
8408
|
+
})) : null, iconOnly ? null : /*#__PURE__*/React.createElement("span", {
|
|
8409
|
+
style: a.label
|
|
8410
|
+
}, children), trailing));
|
|
8411
|
+
}
|
|
8412
|
+
|
|
8413
|
+
/** Keybricks button. variant: primary | dark | outline | ghost | primary-soft | danger | danger-soft | text | ai; size: sm 28 | md 32 | lg 40 — omit it to inherit the region's tier (the default). Interaction states: hover (one step darker) · press (two steps, set via mouse-down) · keyboard focus ring · loading · disabled. */
|
|
7316
8414
|
function Button({
|
|
7317
8415
|
variant = "primary",
|
|
7318
8416
|
size,
|
|
7319
8417
|
icon,
|
|
8418
|
+
trailingIcon,
|
|
7320
8419
|
iconSize,
|
|
7321
8420
|
iconPosition = "left",
|
|
7322
8421
|
medium,
|
|
@@ -7325,6 +8424,9 @@ function Button({
|
|
|
7325
8424
|
fullWidth,
|
|
7326
8425
|
iconOnly,
|
|
7327
8426
|
label,
|
|
8427
|
+
text,
|
|
8428
|
+
nativeType = "button",
|
|
8429
|
+
hovered,
|
|
7328
8430
|
pressed,
|
|
7329
8431
|
focused,
|
|
7330
8432
|
children,
|
|
@@ -7338,6 +8440,35 @@ function Button({
|
|
|
7338
8440
|
const busy = disabled || loading;
|
|
7339
8441
|
const isPressed = press || pressed;
|
|
7340
8442
|
const isFocused = focus || focused;
|
|
8443
|
+
const glyph = g => typeof g === "string" ? /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
8444
|
+
name: g,
|
|
8445
|
+
size: iconSize || 16,
|
|
8446
|
+
style: iconSize ? null : tierIcon
|
|
8447
|
+
}) : g || null;
|
|
8448
|
+
const tail = trailingIcon ? glyph(trailingIcon) : null;
|
|
8449
|
+
const label_ = children ?? text;
|
|
8450
|
+
if (variant === "ai") return /*#__PURE__*/React.createElement(AiButton, {
|
|
8451
|
+
size: size,
|
|
8452
|
+
icon: icon,
|
|
8453
|
+
trailing: tail,
|
|
8454
|
+
nativeType: nativeType,
|
|
8455
|
+
iconSize: iconSize,
|
|
8456
|
+
medium: medium,
|
|
8457
|
+
fullWidth: fullWidth,
|
|
8458
|
+
iconOnly: iconOnly,
|
|
8459
|
+
label: label,
|
|
8460
|
+
busy: busy,
|
|
8461
|
+
loading: loading,
|
|
8462
|
+
hovered: hover || hovered,
|
|
8463
|
+
isPressed: isPressed,
|
|
8464
|
+
isFocused: isFocused,
|
|
8465
|
+
setHover: setHover,
|
|
8466
|
+
setPress: setPress,
|
|
8467
|
+
setFocus: setFocus,
|
|
8468
|
+
style: style,
|
|
8469
|
+
onClick: onClick,
|
|
8470
|
+
rest: rest
|
|
8471
|
+
}, label_);
|
|
7341
8472
|
const s = {
|
|
7342
8473
|
...btnBase,
|
|
7343
8474
|
...variants[variant],
|
|
@@ -7367,31 +8498,23 @@ function Button({
|
|
|
7367
8498
|
if (isPressed) s.opacity = .7;
|
|
7368
8499
|
} else if (isPressed) {
|
|
7369
8500
|
s.background = presses[variant];
|
|
7370
|
-
} else if (hover) {
|
|
8501
|
+
} else if (hover || hovered) {
|
|
7371
8502
|
s.background = hovers[variant];
|
|
7372
8503
|
}
|
|
7373
8504
|
if (isFocused) s.boxShadow = "var(--ring-focus)";
|
|
7374
8505
|
}
|
|
7375
|
-
const iconStyle = iconSize ? null : tierIcon;
|
|
7376
8506
|
const leading = loading ? /*#__PURE__*/React.createElement(Spinner, {
|
|
7377
8507
|
size: iconSize,
|
|
7378
8508
|
color: s.color
|
|
7379
|
-
}) : icon && iconPosition === "left" ?
|
|
7380
|
-
|
|
7381
|
-
size: iconSize || 16,
|
|
7382
|
-
style: iconStyle
|
|
7383
|
-
}) : null;
|
|
7384
|
-
const trailing = !loading && icon && iconPosition === "right" ? /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
7385
|
-
name: icon,
|
|
7386
|
-
size: iconSize || 16,
|
|
7387
|
-
style: iconStyle
|
|
7388
|
-
}) : null;
|
|
8509
|
+
}) : icon && iconPosition === "left" ? glyph(icon) : null;
|
|
8510
|
+
const trailing = !loading && icon && iconPosition === "right" ? glyph(icon) : null;
|
|
7389
8511
|
return /*#__PURE__*/React.createElement("button", _extends({
|
|
7390
|
-
type:
|
|
8512
|
+
type: nativeType,
|
|
7391
8513
|
"data-press": "own",
|
|
7392
8514
|
"data-size": size,
|
|
7393
8515
|
style: s,
|
|
7394
8516
|
disabled: busy,
|
|
8517
|
+
"aria-busy": loading || undefined,
|
|
7395
8518
|
"aria-label": iconOnly ? label : undefined,
|
|
7396
8519
|
onClick: onClick,
|
|
7397
8520
|
onMouseEnter: () => setHover(true),
|
|
@@ -7413,7 +8536,7 @@ function Button({
|
|
|
7413
8536
|
}
|
|
7414
8537
|
},
|
|
7415
8538
|
onBlur: () => setFocus(false)
|
|
7416
|
-
}, rest), leading, iconOnly ? null :
|
|
8539
|
+
}, rest), leading, iconOnly ? null : label_, trailing, tail);
|
|
7417
8540
|
}
|
|
7418
8541
|
|
|
7419
8542
|
/** Attached row of Buttons sharing one outline (segmented action group). Children should be <Button variant="outline"> or similar. */
|
|
@@ -9125,8 +10248,10 @@ function Tooltip({
|
|
|
9125
10248
|
}, label) : null);
|
|
9126
10249
|
}
|
|
9127
10250
|
|
|
9128
|
-
/**
|
|
9129
|
-
|
|
10251
|
+
/** Modal dialog. A size region that defaults to lg (40px controls) whatever the page behind it uses — a dialog does not compete for space; pass `size` to override. 24px padding, footer buttons 8px apart.
|
|
10252
|
+
* Keyboard and focus (always): focus moves into the dialog ([data-autofocus] first) and Tab stays inside it; on close focus returns to where it was.
|
|
10253
|
+
* Options (defaults keep the usual dialog): closeOnEsc · closeOnScrim · showClose · lockScroll · scrim · alert (role="alertdialog" for confirmations) · zIndex.
|
|
10254
|
+
* onClose(reason): "close" (×) | "esc" | "scrim". */
|
|
9130
10255
|
function Modal({
|
|
9131
10256
|
open,
|
|
9132
10257
|
title,
|
|
@@ -9135,30 +10260,59 @@ function Modal({
|
|
|
9135
10260
|
footer,
|
|
9136
10261
|
width = 440,
|
|
9137
10262
|
size = "lg",
|
|
10263
|
+
alert,
|
|
10264
|
+
closeOnEsc = true,
|
|
10265
|
+
closeOnScrim = true,
|
|
10266
|
+
showClose = true,
|
|
10267
|
+
lockScroll = true,
|
|
10268
|
+
scrim = true,
|
|
10269
|
+
autoFocus = true,
|
|
10270
|
+
zIndex,
|
|
10271
|
+
closeLabel = "Close",
|
|
9138
10272
|
children,
|
|
9139
10273
|
style
|
|
9140
10274
|
}) {
|
|
10275
|
+
const panel = React.useRef(null);
|
|
10276
|
+
const uid = React.useId();
|
|
10277
|
+
const opts = React.useRef({});
|
|
10278
|
+
opts.current.closeOnEsc = closeOnEsc;
|
|
10279
|
+
opts.current.onEsc = () => onClose && onClose("esc");
|
|
10280
|
+
React.useEffect(() => {
|
|
10281
|
+
if (!open) return undefined;
|
|
10282
|
+
return __ds_scope.modalOpen(panel.current, Object.assign(opts.current, {
|
|
10283
|
+
lockScroll,
|
|
10284
|
+
autoFocus
|
|
10285
|
+
}));
|
|
10286
|
+
}, [open]);
|
|
9141
10287
|
if (!open) return null;
|
|
10288
|
+
const close = reason => onClose && onClose(reason);
|
|
9142
10289
|
return /*#__PURE__*/React.createElement("div", {
|
|
9143
10290
|
style: {
|
|
9144
10291
|
position: "fixed",
|
|
9145
10292
|
inset: 0,
|
|
9146
|
-
zIndex: "var(--z-modal)",
|
|
9147
|
-
background: "var(--bg-scrim)",
|
|
10293
|
+
zIndex: zIndex ?? "var(--z-modal)",
|
|
10294
|
+
background: scrim ? "var(--bg-scrim)" : "transparent",
|
|
9148
10295
|
display: "flex",
|
|
9149
10296
|
alignItems: "center",
|
|
9150
10297
|
justifyContent: "center",
|
|
9151
10298
|
animation: "kb-fade-in var(--dur-fast) var(--ease-out)"
|
|
9152
10299
|
},
|
|
9153
|
-
onClick:
|
|
10300
|
+
onClick: closeOnScrim ? () => close("scrim") : undefined
|
|
9154
10301
|
}, /*#__PURE__*/React.createElement("div", {
|
|
9155
|
-
|
|
10302
|
+
ref: panel,
|
|
10303
|
+
role: alert ? "alertdialog" : "dialog",
|
|
9156
10304
|
"aria-modal": "true",
|
|
10305
|
+
"aria-labelledby": uid + "-t",
|
|
10306
|
+
tabIndex: -1,
|
|
9157
10307
|
"data-size": size,
|
|
9158
10308
|
onClick: e => e.stopPropagation(),
|
|
9159
10309
|
style: {
|
|
9160
10310
|
width,
|
|
9161
10311
|
maxWidth: "92vw",
|
|
10312
|
+
maxHeight: "92vh",
|
|
10313
|
+
overflow: "auto",
|
|
10314
|
+
boxSizing: "border-box",
|
|
10315
|
+
outline: "none",
|
|
9162
10316
|
background: "var(--bg-raised)",
|
|
9163
10317
|
borderRadius: "var(--radius-lg)",
|
|
9164
10318
|
border: "1px solid var(--border-card)",
|
|
@@ -9178,16 +10332,19 @@ function Modal({
|
|
|
9178
10332
|
style: {
|
|
9179
10333
|
display: "flex",
|
|
9180
10334
|
flexDirection: "column",
|
|
9181
|
-
gap: 2
|
|
10335
|
+
gap: 2,
|
|
10336
|
+
minWidth: 0
|
|
9182
10337
|
}
|
|
9183
10338
|
}, /*#__PURE__*/React.createElement("span", {
|
|
10339
|
+
id: uid + "-t",
|
|
9184
10340
|
style: {
|
|
9185
10341
|
fontFamily: "var(--font-sans)",
|
|
9186
10342
|
fontWeight: "var(--weight-semibold)",
|
|
9187
10343
|
fontSize: "var(--text-md)",
|
|
9188
10344
|
lineHeight: "var(--leading-md)",
|
|
9189
10345
|
letterSpacing: "var(--tracking-md)",
|
|
9190
|
-
color: "var(--text-heading)"
|
|
10346
|
+
color: "var(--text-heading)",
|
|
10347
|
+
overflowWrap: "anywhere"
|
|
9191
10348
|
}
|
|
9192
10349
|
}, title), subtitle ? /*#__PURE__*/React.createElement("span", {
|
|
9193
10350
|
style: {
|
|
@@ -9196,14 +10353,14 @@ function Modal({
|
|
|
9196
10353
|
lineHeight: "var(--leading-xs)",
|
|
9197
10354
|
color: "var(--text-secondary)"
|
|
9198
10355
|
}
|
|
9199
|
-
}, subtitle) : null), /*#__PURE__*/React.createElement(__ds_scope.IconButton, {
|
|
10356
|
+
}, subtitle) : null), showClose ? /*#__PURE__*/React.createElement(__ds_scope.IconButton, {
|
|
9200
10357
|
icon: "x",
|
|
9201
|
-
onClick:
|
|
9202
|
-
label:
|
|
10358
|
+
onClick: () => close("close"),
|
|
10359
|
+
label: closeLabel,
|
|
9203
10360
|
style: {
|
|
9204
10361
|
margin: "calc((var(--leading-md) - var(--control-h)) / 2) -6px 0 0"
|
|
9205
10362
|
}
|
|
9206
|
-
})), children ? /*#__PURE__*/React.createElement("div", {
|
|
10363
|
+
}) : null), children ? /*#__PURE__*/React.createElement("div", {
|
|
9207
10364
|
style: {
|
|
9208
10365
|
padding: "20px 24px 0"
|
|
9209
10366
|
}
|
|
@@ -9219,40 +10376,54 @@ function Modal({
|
|
|
9219
10376
|
const toastTones = {
|
|
9220
10377
|
success: {
|
|
9221
10378
|
icon: "circle-check",
|
|
9222
|
-
|
|
10379
|
+
bg: "var(--success-bg)",
|
|
10380
|
+
border: "var(--success)",
|
|
10381
|
+
fg: "var(--success-text)"
|
|
9223
10382
|
},
|
|
9224
10383
|
danger: {
|
|
9225
10384
|
icon: "triangle-alert",
|
|
9226
|
-
|
|
10385
|
+
bg: "var(--danger-bg)",
|
|
10386
|
+
border: "var(--danger)",
|
|
10387
|
+
fg: "var(--danger-text)"
|
|
9227
10388
|
},
|
|
9228
10389
|
warning: {
|
|
9229
10390
|
icon: "triangle-alert",
|
|
9230
|
-
|
|
10391
|
+
bg: "var(--warning-bg)",
|
|
10392
|
+
border: "var(--warning)",
|
|
10393
|
+
fg: "var(--warning-text)"
|
|
9231
10394
|
},
|
|
9232
10395
|
info: {
|
|
9233
10396
|
icon: "info",
|
|
9234
|
-
|
|
10397
|
+
bg: "var(--info-bg)",
|
|
10398
|
+
border: "var(--focus-border)",
|
|
10399
|
+
fg: "var(--info-fg)"
|
|
9235
10400
|
}
|
|
9236
10401
|
};
|
|
9237
10402
|
|
|
9238
|
-
/** Single toast row. */
|
|
10403
|
+
/** Single toast row — tinted: tone wash over --bg-raised, solid tone border, tone-coloured icon, title and dismiss. */
|
|
9239
10404
|
function Toast({
|
|
9240
10405
|
tone = "success",
|
|
9241
10406
|
title,
|
|
9242
10407
|
meta,
|
|
10408
|
+
icon,
|
|
10409
|
+
count,
|
|
10410
|
+
closeLabel = "Dismiss",
|
|
9243
10411
|
onClose,
|
|
10412
|
+
children,
|
|
9244
10413
|
style
|
|
9245
10414
|
}) {
|
|
9246
|
-
const t = toastTones[tone];
|
|
10415
|
+
const t = toastTones[tone] || toastTones.info;
|
|
9247
10416
|
return /*#__PURE__*/React.createElement("div", {
|
|
10417
|
+
role: tone === "danger" || tone === "warning" ? "alert" : "status",
|
|
9248
10418
|
style: {
|
|
9249
10419
|
display: "flex",
|
|
9250
10420
|
alignItems: "flex-start",
|
|
9251
10421
|
gap: 10,
|
|
9252
10422
|
minWidth: 280,
|
|
9253
10423
|
maxWidth: 380,
|
|
9254
|
-
|
|
9255
|
-
|
|
10424
|
+
backgroundColor: "var(--bg-raised)",
|
|
10425
|
+
backgroundImage: `linear-gradient(${t.bg}, ${t.bg})`,
|
|
10426
|
+
border: `1px solid ${t.border}`,
|
|
9256
10427
|
borderRadius: "var(--radius-lg)",
|
|
9257
10428
|
boxShadow: "var(--shadow-menu)",
|
|
9258
10429
|
padding: "12px 12px 12px 14px",
|
|
@@ -9261,13 +10432,13 @@ function Toast({
|
|
|
9261
10432
|
}
|
|
9262
10433
|
}, /*#__PURE__*/React.createElement("span", {
|
|
9263
10434
|
style: {
|
|
9264
|
-
color: t.
|
|
10435
|
+
color: t.fg,
|
|
9265
10436
|
display: "inline-flex",
|
|
9266
10437
|
alignItems: "center",
|
|
9267
10438
|
flexShrink: 0,
|
|
9268
10439
|
height: "var(--leading-base)"
|
|
9269
10440
|
}
|
|
9270
|
-
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
10441
|
+
}, icon || /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
9271
10442
|
name: t.icon,
|
|
9272
10443
|
size: 16
|
|
9273
10444
|
})), /*#__PURE__*/React.createElement("div", {
|
|
@@ -9284,50 +10455,122 @@ function Toast({
|
|
|
9284
10455
|
fontSize: "var(--text-base)",
|
|
9285
10456
|
lineHeight: "var(--leading-base)",
|
|
9286
10457
|
letterSpacing: "var(--tracking-base)",
|
|
9287
|
-
color:
|
|
10458
|
+
color: t.fg,
|
|
10459
|
+
overflowWrap: "anywhere"
|
|
9288
10460
|
}
|
|
9289
|
-
}, title
|
|
10461
|
+
}, children ?? title, count > 1 ? /*#__PURE__*/React.createElement("span", {
|
|
10462
|
+
style: {
|
|
10463
|
+
color: "var(--text-secondary)",
|
|
10464
|
+
fontWeight: "var(--weight-regular)",
|
|
10465
|
+
fontVariantNumeric: "tabular-nums"
|
|
10466
|
+
}
|
|
10467
|
+
}, " \xD7 ", count) : null), meta ? /*#__PURE__*/React.createElement("span", {
|
|
9290
10468
|
style: {
|
|
9291
10469
|
fontFamily: "var(--font-sans)",
|
|
9292
10470
|
fontSize: "var(--text-xs)",
|
|
9293
10471
|
lineHeight: "var(--leading-xs)",
|
|
9294
|
-
color: "var(--text-
|
|
10472
|
+
color: "var(--text-body)"
|
|
9295
10473
|
}
|
|
9296
10474
|
}, meta) : null), onClose ? /*#__PURE__*/React.createElement(__ds_scope.IconButton, {
|
|
9297
10475
|
icon: "x",
|
|
9298
10476
|
size: "sm",
|
|
9299
10477
|
muted: true,
|
|
9300
10478
|
onClick: onClose,
|
|
9301
|
-
label:
|
|
10479
|
+
label: closeLabel,
|
|
9302
10480
|
style: {
|
|
9303
|
-
margin: "-2px 0"
|
|
10481
|
+
margin: "-2px 0",
|
|
10482
|
+
color: t.fg
|
|
9304
10483
|
}
|
|
9305
10484
|
}) : null);
|
|
9306
10485
|
}
|
|
10486
|
+
const STACK_PLACE = {
|
|
10487
|
+
"top-center": o => ({
|
|
10488
|
+
top: o,
|
|
10489
|
+
left: "50%",
|
|
10490
|
+
transform: "translateX(-50%)",
|
|
10491
|
+
alignItems: "center"
|
|
10492
|
+
}),
|
|
10493
|
+
"top-right": o => ({
|
|
10494
|
+
top: o,
|
|
10495
|
+
right: o,
|
|
10496
|
+
alignItems: "flex-end"
|
|
10497
|
+
}),
|
|
10498
|
+
"bottom-right": o => ({
|
|
10499
|
+
bottom: o,
|
|
10500
|
+
right: o,
|
|
10501
|
+
alignItems: "flex-end"
|
|
10502
|
+
}),
|
|
10503
|
+
"bottom-center": o => ({
|
|
10504
|
+
bottom: o,
|
|
10505
|
+
left: "50%",
|
|
10506
|
+
transform: "translateX(-50%)",
|
|
10507
|
+
alignItems: "center"
|
|
10508
|
+
})
|
|
10509
|
+
};
|
|
10510
|
+
function StackItem({
|
|
10511
|
+
t,
|
|
10512
|
+
duration,
|
|
10513
|
+
onDismiss
|
|
10514
|
+
}) {
|
|
10515
|
+
const [paused, setPaused] = React.useState(false);
|
|
10516
|
+
const ms = t.duration ?? duration;
|
|
10517
|
+
React.useEffect(() => {
|
|
10518
|
+
if (paused || !(ms > 0)) return undefined;
|
|
10519
|
+
const h = setTimeout(() => onDismiss && onDismiss(t.id, "timeout"), ms);
|
|
10520
|
+
return () => clearTimeout(h);
|
|
10521
|
+
}, [paused, ms, t.count, t.id]);
|
|
10522
|
+
const icon = typeof t.icon === "string" ? /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
10523
|
+
name: t.icon,
|
|
10524
|
+
size: 16
|
|
10525
|
+
}) : t.icon;
|
|
10526
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
10527
|
+
className: t.className,
|
|
10528
|
+
style: {
|
|
10529
|
+
maxWidth: "92vw"
|
|
10530
|
+
},
|
|
10531
|
+
onMouseEnter: () => setPaused(true),
|
|
10532
|
+
onMouseLeave: () => setPaused(false),
|
|
10533
|
+
onFocus: () => setPaused(true),
|
|
10534
|
+
onBlur: () => setPaused(false)
|
|
10535
|
+
}, /*#__PURE__*/React.createElement(Toast, {
|
|
10536
|
+
tone: t.tone,
|
|
10537
|
+
title: t.title,
|
|
10538
|
+
meta: t.meta,
|
|
10539
|
+
icon: icon,
|
|
10540
|
+
count: t.count,
|
|
10541
|
+
closeLabel: t.closeLabel,
|
|
10542
|
+
style: t.style,
|
|
10543
|
+
onClose: t.dismissible === false ? undefined : () => onDismiss && onDismiss(t.id, "close")
|
|
10544
|
+
}, t.content));
|
|
10545
|
+
}
|
|
9307
10546
|
|
|
9308
|
-
/** Fixed bottom-right
|
|
10547
|
+
/** Fixed stack of toasts. placement: "bottom-right" (default) | "top-center" | "top-right" | "bottom-center"; offset from the edges (default 24).
|
|
10548
|
+
* duration (ms, default 0 = stay) auto-dismisses — paused while the pointer or focus is on a toast, restarted when its count changes.
|
|
10549
|
+
* Items: { id, tone, title, meta, content, icon, count, duration, dismissible, closeLabel, className, style }. onDismiss(id, "close" | "timeout"). */
|
|
9309
10550
|
function ToastStack({
|
|
9310
10551
|
toasts = [],
|
|
9311
10552
|
onDismiss,
|
|
10553
|
+
placement = "bottom-right",
|
|
10554
|
+
offset = 24,
|
|
10555
|
+
duration = 0,
|
|
10556
|
+
zIndex,
|
|
9312
10557
|
style
|
|
9313
10558
|
}) {
|
|
9314
10559
|
return /*#__PURE__*/React.createElement("div", {
|
|
9315
10560
|
style: {
|
|
9316
10561
|
position: "fixed",
|
|
9317
|
-
|
|
9318
|
-
bottom: 24,
|
|
9319
|
-
zIndex: "var(--z-toast)",
|
|
10562
|
+
zIndex: zIndex ?? "var(--z-toast)",
|
|
9320
10563
|
display: "flex",
|
|
9321
10564
|
flexDirection: "column",
|
|
9322
10565
|
gap: 8,
|
|
10566
|
+
...(STACK_PLACE[placement] || STACK_PLACE["bottom-right"])(offset),
|
|
9323
10567
|
...style
|
|
9324
10568
|
}
|
|
9325
|
-
}, toasts.map(t => /*#__PURE__*/React.createElement(
|
|
10569
|
+
}, toasts.map(t => /*#__PURE__*/React.createElement(StackItem, {
|
|
9326
10570
|
key: t.id,
|
|
9327
|
-
|
|
9328
|
-
|
|
9329
|
-
|
|
9330
|
-
onClose: () => onDismiss && onDismiss(t.id)
|
|
10571
|
+
t: t,
|
|
10572
|
+
duration: duration,
|
|
10573
|
+
onDismiss: onDismiss
|
|
9331
10574
|
})));
|
|
9332
10575
|
}
|
|
9333
10576
|
Object.assign(__ds_scope, { Tooltip, Modal, Toast, ToastStack });
|
|
@@ -9911,6 +11154,7 @@ function TitleCell({
|
|
|
9911
11154
|
minWidth: 0
|
|
9912
11155
|
}
|
|
9913
11156
|
}, icon ? /*#__PURE__*/React.createElement("span", {
|
|
11157
|
+
"data-row-open": open ? "" : undefined,
|
|
9914
11158
|
onClick: open || undefined,
|
|
9915
11159
|
style: {
|
|
9916
11160
|
display: "inline-flex",
|
|
@@ -9946,6 +11190,7 @@ function TitleCell({
|
|
|
9946
11190
|
} : null)
|
|
9947
11191
|
}
|
|
9948
11192
|
}, open ? {
|
|
11193
|
+
"data-row-open": "",
|
|
9949
11194
|
role: "button",
|
|
9950
11195
|
tabIndex: 0,
|
|
9951
11196
|
onClick: open,
|
|
@@ -9979,6 +11224,9 @@ function TitleCell({
|
|
|
9979
11224
|
* (defaultSort to seed it uncontrolled); compare(a, b, rowA, rowB) overrides the default comparison; manualSort keeps rows as given.
|
|
9980
11225
|
* twoLine — the name column of a document list: icon tile, title over a description, optional mark ("favorite" = filled star), trailing ⋯
|
|
9981
11226
|
* (onRowMore(row, index, event)); onRowOpen(row, index, event) makes the tile and the title open the row (hand cursor, Enter / Space on the title).
|
|
11227
|
+
* rowOpen — "title" (default): only the tile and the title open a row. "row": a click anywhere on a body row calls onRowOpen(row, index, event) and the
|
|
11228
|
+
* whole row shows the hand cursor — except clicks on buttons (⋯, tree arrow), checkboxes, inputs, links, menus, and clicks that end a text
|
|
11229
|
+
* selection. The tile and title still open it once (never twice). Tree folders: decide in onRowOpen whether to expand or enter.
|
|
9982
11230
|
* tree — rows nest through `children` (or `hasChildren` for rows you load on demand); the twoLine column indents 24px per level with an
|
|
9983
11231
|
* expand arrow; expandedKeys / defaultExpandedKeys / onExpandChange(row, expanded, keys); rowKey names the key field (default "id").
|
|
9984
11232
|
* labels — { sortAsc, sortDesc, sortClear, more, expand, collapse } for every word the table draws (English by default).
|
|
@@ -10021,6 +11269,7 @@ function Table({
|
|
|
10021
11269
|
onColumnResize,
|
|
10022
11270
|
onRowMore,
|
|
10023
11271
|
onRowOpen,
|
|
11272
|
+
rowOpen = "title",
|
|
10024
11273
|
sort,
|
|
10025
11274
|
defaultSort = null,
|
|
10026
11275
|
onSortChange,
|
|
@@ -10145,6 +11394,7 @@ function Table({
|
|
|
10145
11394
|
if (onExpandChange) onExpandChange(item.r, !item.open, next);
|
|
10146
11395
|
};
|
|
10147
11396
|
const tier = size || (dense ? "sm" : undefined);
|
|
11397
|
+
const rowMode = rowOpen === "row" && !!onRowOpen;
|
|
10148
11398
|
const flushTop = bordered || framed;
|
|
10149
11399
|
const colCount = columns.length || 1;
|
|
10150
11400
|
const [localW, setLocalW] = React.useState({});
|
|
@@ -10336,10 +11586,16 @@ function Table({
|
|
|
10336
11586
|
"data-row": "",
|
|
10337
11587
|
"aria-level": tree ? item.level + 1 : undefined,
|
|
10338
11588
|
"aria-expanded": item.kids ? item.open : undefined,
|
|
11589
|
+
onClick: rowMode ? e => {
|
|
11590
|
+
if (__ds_scope.rowOpenFromClick(e)) onRowOpen(r, ri, e);
|
|
11591
|
+
} : undefined,
|
|
10339
11592
|
style: {
|
|
10340
11593
|
...(dis ? {
|
|
10341
11594
|
"--row-wash": "initial"
|
|
10342
11595
|
} : null),
|
|
11596
|
+
...(rowMode ? {
|
|
11597
|
+
cursor: "pointer"
|
|
11598
|
+
} : null),
|
|
10343
11599
|
height: "var(--bar-h)",
|
|
10344
11600
|
background: pinInfo && pinInfo.sel.has(ri) ? "var(--row-wash, var(--bg-inset))" : "var(--row-wash, transparent)",
|
|
10345
11601
|
transition: "var(--t-hover)",
|
|
@@ -10363,6 +11619,7 @@ function Table({
|
|
|
10363
11619
|
...cellFont(c)
|
|
10364
11620
|
}
|
|
10365
11621
|
}, selectable && i === 0 ? /*#__PURE__*/React.createElement("span", {
|
|
11622
|
+
"data-row-skip": "",
|
|
10366
11623
|
style: checkSlot,
|
|
10367
11624
|
title: dis && disabledReason ? disabledReason(r, ri) : undefined
|
|
10368
11625
|
}, /*#__PURE__*/React.createElement(__ds_scope.Checkbox, {
|
|
@@ -13393,8 +14650,8 @@ const VUE_ICON_PATHS = {
|
|
|
13393
14650
|
"time-future": '<path d="M20 6A10 10 0 1 0 22 12"/><path d="M12 7v5h5"/><path d="M21 2v5h-5"/>',
|
|
13394
14651
|
"time-restatement": '<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l4 2"/>',
|
|
13395
14652
|
// AI glyphs (2.3.0) — traced from the two reference glyphs, redrawn to core rules (stroke 2, no fill, integer endpoints, >=4 between separate elements)
|
|
13396
|
-
ai: '<path d="M9
|
|
13397
|
-
"ai-sparkles": '<path d="M9
|
|
14653
|
+
ai: '<path d="M9 3H7a4 4 0 0 0-4 4v10a4 4 0 0 0 4 4h10a4 4 0 0 0 4-4v-2"/><path d="M16 2c.72 3.6 2.4 5.28 6 6c-3.6.72-5.28 2.4-6 6c-.72-3.6-2.4-5.28-6-6c3.6-.72 5.28-2.4 6-6Z"/><path d="M9 12c.6 1.5 1.5 2.4 3 3c-1.5.6-2.4 1.5-3 3c-.6-1.5-1.5-2.4-3-3c1.5-.6 2.4-1.5 3-3Z"/>',
|
|
14654
|
+
"ai-sparkles": '<path d="M9 2c.84 4.2 2.8 6.16 7 7c-4.2.84-6.16 2.8-7 7c-.84-4.2-2.8-6.16-7-7c4.2-.84 6.16-2.8 7-7Z"/><path d="M17 13c.8 2 2 3.2 4 4c-2 .8-3.2 2-4 4c-.8-2-2-3.2-4-4c2-.8 3.2-2 4-4Z"/>',
|
|
13398
14655
|
// Keybricks business glyphs (2.4.6) — dimensions, modules, rules-*, task-*; drawn to core rules or taken from Lucide
|
|
13399
14656
|
"dimension-account": '<path d="M12 7v14"/><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/><path d="M5 8h3"/><path d="M5 11h3"/><path d="M5 14h3"/><path d="M17 6.5v1"/><path d="M17 12.5v1"/><path d="M18.5 7.5h-2a1.25 1.25 0 0 0 0 2.5h1a1.25 1.25 0 0 1 0 2.5h-2"/>',
|
|
13400
14657
|
"dimension-audit": '<path d="M11.1 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.589 3.588A2.4 2.4 0 0 1 20 8v3.25"/><path d="M14 2v5a1 1 0 0 0 1 1h5"/><path d="m21 22-2.88-2.88"/><circle cx="16" cy="17" r="3"/>',
|
|
@@ -13471,7 +14728,9 @@ const VUE_ICON_PATHS = {
|
|
|
13471
14728
|
"task-etl": '<rect width="8" height="4" x="8" y="2" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><ellipse cx="12" cy="10.5" rx="3.5" ry="1.5"/><path d="M8.5 10.5v6c0 .83 1.57 1.5 3.5 1.5s3.5-.67 3.5-1.5v-6"/><path d="M8.5 13.5c0 .83 1.57 1.5 3.5 1.5s3.5-.67 3.5-1.5"/>',
|
|
13472
14729
|
"task-shared": '<rect width="8" height="4" x="8" y="2" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><g transform="translate(-.5 4)"><circle cx="15.3" cy="6.8" r=".75"/><circle cx="9.7" cy="10" r=".75"/><circle cx="15.3" cy="13.2" r=".75"/><path d="m11.35 9.06 2.3-1.32"/><path d="m11.35 10.94 2.3 1.32"/></g>',
|
|
13473
14730
|
"task-intercompany": '<rect width="8" height="4" x="8" y="2" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><g transform="translate(-.5 4)"><path d="M8.5 14V6.5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1V14"/><path d="M13.5 9.5H16a1 1 0 0 1 1 1V14"/><path d="M7.5 14h10"/><path d="M11 8.5h.01"/><path d="M11 11h.01"/></g>',
|
|
13474
|
-
ownership: '<path d="M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17"/><path d="m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9"/><path d="m2 16 6 6"/><circle cx="9" cy="5" r="3"/><path d="M12 5h9"/><path d="M18 5v2.5"/><path d="M21 5v2"/>'
|
|
14731
|
+
ownership: '<path d="M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17"/><path d="m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9"/><path d="m2 16 6 6"/><circle cx="9" cy="5" r="3"/><path d="M12 5h9"/><path d="M18 5v2.5"/><path d="M21 5v2"/>',
|
|
14732
|
+
prophet: '<path d="M5.66 13.5A7.5 7.5 0 1 1 18.34 13.5"/><path d="M8.5 10a3.5 3.5 0 0 1 7 0v1.5c0 3.2-1.5 5.6-3.5 7.5c-2-1.9-3.5-4.3-3.5-7.5Z"/><path d="M8.71 13.5c1.05.95 2.15 1.4 3.29 1.4s2.24-.45 3.29-1.4"/><path d="M3.5 22a5.5 5.5 0 0 1 4-5.3"/><path d="M20.5 22a5.5 5.5 0 0 0-4-5.3"/>',
|
|
14733
|
+
"prophet-sparkle": '<path d="M5.66 13.5A7.5 7.5 0 0 1 13.24 2.1"/><path d="M19 2c.36 1.8 1.2 2.64 3 3c-1.8.36-2.64 1.2-3 3c-.36-1.8-1.2-2.64-3-3c1.8-.36 2.64-1.2 3-3Z"/><path d="M8.5 10a3.5 3.5 0 0 1 7 0v1.5c0 3.2-1.5 5.6-3.5 7.5c-2-1.9-3.5-4.3-3.5-7.5Z"/><path d="M8.71 13.5c1.05.95 2.15 1.4 3.29 1.4s2.24-.45 3.29-1.4"/><path d="M3.5 22a5.5 5.5 0 0 1 4-5.3"/><path d="M20.5 22a5.5 5.5 0 0 0-4-5.3"/>'
|
|
13475
14734
|
};
|
|
13476
14735
|
Object.assign(__ds_scope, { VUE_ICON_PATHS });
|
|
13477
14736
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/icons/icon-paths.js", error: String((e && e.message) || e) }); }
|
|
@@ -14009,7 +15268,7 @@ function Row({
|
|
|
14009
15268
|
onMouseLeave: () => setHover(false),
|
|
14010
15269
|
style: {
|
|
14011
15270
|
position: "relative",
|
|
14012
|
-
minHeight: "var(--h
|
|
15271
|
+
minHeight: "var(--control-h)",
|
|
14013
15272
|
borderRadius: "var(--radius-md)",
|
|
14014
15273
|
display: "flex",
|
|
14015
15274
|
alignItems: "center",
|
|
@@ -14048,7 +15307,7 @@ function Row({
|
|
|
14048
15307
|
disabled: disabled || node.disableCheckbox,
|
|
14049
15308
|
tabIndex: -1,
|
|
14050
15309
|
onChange: () => api.check(key)
|
|
14051
|
-
})) : null, cfg.showIcon ? /*#__PURE__*/React.createElement("span", {
|
|
15310
|
+
})) : null, cfg.showIcon && node.icon !== false ? /*#__PURE__*/React.createElement("span", {
|
|
14052
15311
|
style: {
|
|
14053
15312
|
color: branch ? "var(--text-muted)" : docHues[node.hue || "gray"],
|
|
14054
15313
|
display: "inline-flex",
|
|
@@ -14056,12 +15315,17 @@ function Row({
|
|
|
14056
15315
|
}
|
|
14057
15316
|
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
14058
15317
|
name: node.icon || (branch ? open ? "folder-open" : "folder" : "file-text"),
|
|
14059
|
-
size: 15
|
|
15318
|
+
size: 15,
|
|
15319
|
+
style: {
|
|
15320
|
+
width: "calc(var(--control-icon) - 1px)",
|
|
15321
|
+
height: "calc(var(--control-icon) - 1px)"
|
|
15322
|
+
}
|
|
14060
15323
|
})) : null, /*#__PURE__*/React.createElement("span", {
|
|
14061
15324
|
style: {
|
|
14062
15325
|
fontFamily: "var(--font-sans)",
|
|
14063
|
-
fontSize: "var(--text
|
|
14064
|
-
lineHeight: "var(--leading
|
|
15326
|
+
fontSize: "var(--control-text)",
|
|
15327
|
+
lineHeight: "var(--control-leading)",
|
|
15328
|
+
letterSpacing: "var(--control-tracking)",
|
|
14065
15329
|
fontWeight: selected ? "var(--weight-medium)" : "var(--weight-regular)",
|
|
14066
15330
|
color: disabled ? "var(--text-muted)" : "var(--text-heading)",
|
|
14067
15331
|
whiteSpace: "nowrap",
|
|
@@ -14106,7 +15370,7 @@ function Row({
|
|
|
14106
15370
|
fontFamily: "var(--font-sans)",
|
|
14107
15371
|
fontSize: "var(--text-xs)",
|
|
14108
15372
|
color: "var(--text-muted)",
|
|
14109
|
-
height: "var(--h
|
|
15373
|
+
height: "var(--control-h)",
|
|
14110
15374
|
display: "flex",
|
|
14111
15375
|
alignItems: "center"
|
|
14112
15376
|
}
|
|
@@ -14118,7 +15382,9 @@ function Row({
|
|
|
14118
15382
|
* (with indeterminate parents and `checkStrictly` opt-out), disabled nodes and disabled
|
|
14119
15383
|
* checkboxes, connector lines, async child loading, search highlighting, drag to move,
|
|
14120
15384
|
* and full keyboard navigation. Node shape: { key, title, icon, hue, count, tag, children,
|
|
14121
|
-
* disabled, disableCheckbox, selectable, checkable, isLeaf }.
|
|
15385
|
+
* disabled, disableCheckbox, selectable, checkable, isLeaf }. icon: false drops that row's glyph (no gap kept), e.g. a root.
|
|
15386
|
+
* Follows the size tier of its region: row --control-h (sm 28 · md 32 · lg 40), text --control-text / -leading / -tracking,
|
|
15387
|
+
* glyph --control-icon − 1px (md 15, as before).
|
|
14122
15388
|
*/
|
|
14123
15389
|
function Tree({
|
|
14124
15390
|
items = [],
|
|
@@ -14397,7 +15663,8 @@ function Tree({
|
|
|
14397
15663
|
style: {
|
|
14398
15664
|
padding: "10px 8px",
|
|
14399
15665
|
fontFamily: "var(--font-sans)",
|
|
14400
|
-
fontSize: "var(--text
|
|
15666
|
+
fontSize: "var(--control-text)",
|
|
15667
|
+
lineHeight: "var(--control-leading)",
|
|
14401
15668
|
color: "var(--text-muted)"
|
|
14402
15669
|
}
|
|
14403
15670
|
}, "No matching items") : rows.map(r => /*#__PURE__*/React.createElement(Row, {
|
|
@@ -16358,8 +17625,584 @@ function SegmentedControl({
|
|
|
16358
17625
|
Object.assign(__ds_scope, { SegmentedControl });
|
|
16359
17626
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/tabs/SegmentedControl.jsx", error: String((e && e.message) || e) }); }
|
|
16360
17627
|
|
|
17628
|
+
// components/forms/GlobalSearch.jsx
|
|
17629
|
+
try { (() => {
|
|
17630
|
+
/** Default copy: .en (default) and .zh (drafted; Prophet AI = 方知). Pass one, or your own, as labels. */
|
|
17631
|
+
|
|
17632
|
+
function AiTile({
|
|
17633
|
+
on
|
|
17634
|
+
}) {
|
|
17635
|
+
const t = __ds_scope.gsAiTile(on);
|
|
17636
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
17637
|
+
style: t.outer
|
|
17638
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
17639
|
+
style: t.inner
|
|
17640
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
17641
|
+
style: t.tint
|
|
17642
|
+
}), /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
17643
|
+
name: "prophet-sparkle",
|
|
17644
|
+
size: 16,
|
|
17645
|
+
gradient: on,
|
|
17646
|
+
style: t.icon
|
|
17647
|
+
})));
|
|
17648
|
+
}
|
|
17649
|
+
|
|
17650
|
+
/** Global Search (TopBar instance of Search). Collapsed: a quiet field with a ⌘K / Ctrl K hint. Open (click, ⌘K / Ctrl K): a 720px card over the
|
|
17651
|
+
* top bar with a scrim — input row, scope bar, grouped results, pinned Ask Prophet AI / Deep Search rows, keyboard footer.
|
|
17652
|
+
* It never shows AI answers: every AI entry closes the card and calls onAsk(question) so the Prophet AI panel can open.
|
|
17653
|
+
* items: local data matched by title / keywords; or onQuery(term) → items | Promise<items> (debounced 300ms).
|
|
17654
|
+
* onDeepSearch(term, update) runs Deep Search: push { status, steps, elapsed, conclusion, sources, onOpenReport } through update; return a cancel fn. */
|
|
17655
|
+
function GlobalSearch({
|
|
17656
|
+
placeholder,
|
|
17657
|
+
inputPlaceholder,
|
|
17658
|
+
items = [],
|
|
17659
|
+
onQuery,
|
|
17660
|
+
recentSearches = [],
|
|
17661
|
+
recent = [],
|
|
17662
|
+
prompts = [],
|
|
17663
|
+
onSelect,
|
|
17664
|
+
onAsk,
|
|
17665
|
+
onDeepSearch,
|
|
17666
|
+
onInput,
|
|
17667
|
+
labels,
|
|
17668
|
+
inline,
|
|
17669
|
+
defaultOpen,
|
|
17670
|
+
defaultQuery = "",
|
|
17671
|
+
defaultDeep,
|
|
17672
|
+
style
|
|
17673
|
+
}) {
|
|
17674
|
+
const L = __ds_scope.gsLabels(labels);
|
|
17675
|
+
const [open, setOpen] = React.useState(!!(inline || defaultOpen));
|
|
17676
|
+
const [q, setQ] = React.useState(defaultQuery);
|
|
17677
|
+
const [scope, setScope] = React.useState(0);
|
|
17678
|
+
const [found, setFound] = React.useState(null);
|
|
17679
|
+
const [loading, setLoading] = React.useState(false);
|
|
17680
|
+
const [sel, setSel] = React.useState(0);
|
|
17681
|
+
const [deep, setDeep] = React.useState(defaultDeep ? {
|
|
17682
|
+
query: defaultQuery,
|
|
17683
|
+
...defaultDeep
|
|
17684
|
+
} : null);
|
|
17685
|
+
const [stepsOpen, setStepsOpen] = React.useState(false);
|
|
17686
|
+
const [hover, setHover] = React.useState(false);
|
|
17687
|
+
const [pos, setPos] = React.useState({
|
|
17688
|
+
left: 8,
|
|
17689
|
+
width: 720,
|
|
17690
|
+
maxH: 640
|
|
17691
|
+
});
|
|
17692
|
+
const fieldRef = React.useRef(null),
|
|
17693
|
+
inputRef = React.useRef(null),
|
|
17694
|
+
bodyRef = React.useRef(null);
|
|
17695
|
+
const cancelDeep = React.useRef(null),
|
|
17696
|
+
now = React.useRef(!!defaultQuery);
|
|
17697
|
+
const mac = React.useMemo(__ds_scope.gsIsMac, []);
|
|
17698
|
+
const term = q.trim();
|
|
17699
|
+
const stopDeep = () => {
|
|
17700
|
+
if (cancelDeep.current) cancelDeep.current();
|
|
17701
|
+
cancelDeep.current = null;
|
|
17702
|
+
};
|
|
17703
|
+
const openCard = () => {
|
|
17704
|
+
if (inline) return;
|
|
17705
|
+
setPos(__ds_scope.gsPos(fieldRef.current));
|
|
17706
|
+
setOpen(true);
|
|
17707
|
+
};
|
|
17708
|
+
const close = () => {
|
|
17709
|
+
if (inline) return;
|
|
17710
|
+
stopDeep();
|
|
17711
|
+
setDeep(null);
|
|
17712
|
+
setOpen(false);
|
|
17713
|
+
if (fieldRef.current) fieldRef.current.focus();
|
|
17714
|
+
};
|
|
17715
|
+
const ask = text => {
|
|
17716
|
+
close();
|
|
17717
|
+
if (onAsk) onAsk(text || "");
|
|
17718
|
+
};
|
|
17719
|
+
const startDeep = () => {
|
|
17720
|
+
stopDeep();
|
|
17721
|
+
setStepsOpen(false);
|
|
17722
|
+
setDeep({
|
|
17723
|
+
query: term,
|
|
17724
|
+
status: "running",
|
|
17725
|
+
steps: []
|
|
17726
|
+
});
|
|
17727
|
+
const c = onDeepSearch && onDeepSearch(term, s => setDeep(d => d ? {
|
|
17728
|
+
...d,
|
|
17729
|
+
...s
|
|
17730
|
+
} : d));
|
|
17731
|
+
cancelDeep.current = typeof c === "function" ? c : null;
|
|
17732
|
+
};
|
|
17733
|
+
const exitDeep = () => {
|
|
17734
|
+
stopDeep();
|
|
17735
|
+
setDeep(null);
|
|
17736
|
+
};
|
|
17737
|
+
React.useEffect(() => {
|
|
17738
|
+
if (defaultOpen && !inline) setPos(__ds_scope.gsPos(fieldRef.current));
|
|
17739
|
+
if (inline) return;
|
|
17740
|
+
const h = e => {
|
|
17741
|
+
if (__ds_scope.gsMod(e, mac) && e.key && e.key.toLowerCase() === "k") {
|
|
17742
|
+
e.preventDefault();
|
|
17743
|
+
setPos(__ds_scope.gsPos(fieldRef.current));
|
|
17744
|
+
setOpen(true);
|
|
17745
|
+
}
|
|
17746
|
+
};
|
|
17747
|
+
document.addEventListener("keydown", h);
|
|
17748
|
+
return () => {
|
|
17749
|
+
document.removeEventListener("keydown", h);
|
|
17750
|
+
stopDeep();
|
|
17751
|
+
};
|
|
17752
|
+
}, [inline, mac]);
|
|
17753
|
+
React.useEffect(() => {
|
|
17754
|
+
if (open && !inline && inputRef.current) inputRef.current.focus();
|
|
17755
|
+
}, [open]);
|
|
17756
|
+
React.useEffect(() => {
|
|
17757
|
+
if (!term) {
|
|
17758
|
+
setFound(null);
|
|
17759
|
+
setLoading(false);
|
|
17760
|
+
return;
|
|
17761
|
+
}
|
|
17762
|
+
let live = true;
|
|
17763
|
+
const run = () => {
|
|
17764
|
+
setLoading(true);
|
|
17765
|
+
Promise.resolve(onQuery ? onQuery(term) : __ds_scope.gsFilter(items, term)).then(r => {
|
|
17766
|
+
if (live) {
|
|
17767
|
+
setFound(r || []);
|
|
17768
|
+
setLoading(false);
|
|
17769
|
+
}
|
|
17770
|
+
}, () => {
|
|
17771
|
+
if (live) {
|
|
17772
|
+
setFound([]);
|
|
17773
|
+
setLoading(false);
|
|
17774
|
+
}
|
|
17775
|
+
});
|
|
17776
|
+
};
|
|
17777
|
+
let t = null;
|
|
17778
|
+
if (now.current) {
|
|
17779
|
+
now.current = false;
|
|
17780
|
+
run();
|
|
17781
|
+
} else t = setTimeout(run, 300);
|
|
17782
|
+
return () => {
|
|
17783
|
+
live = false;
|
|
17784
|
+
if (t) clearTimeout(t);
|
|
17785
|
+
};
|
|
17786
|
+
}, [term]);
|
|
17787
|
+
React.useEffect(() => {
|
|
17788
|
+
setSel(0);
|
|
17789
|
+
}, [found, scope]);
|
|
17790
|
+
const {
|
|
17791
|
+
rows,
|
|
17792
|
+
total
|
|
17793
|
+
} = __ds_scope.gsRows({
|
|
17794
|
+
term,
|
|
17795
|
+
found,
|
|
17796
|
+
loading,
|
|
17797
|
+
scope,
|
|
17798
|
+
recent,
|
|
17799
|
+
prompts,
|
|
17800
|
+
deep,
|
|
17801
|
+
hasDeep: !!onDeepSearch,
|
|
17802
|
+
L
|
|
17803
|
+
});
|
|
17804
|
+
const cur = Math.max(0, Math.min(sel, rows.length - 1));
|
|
17805
|
+
React.useEffect(() => {
|
|
17806
|
+
__ds_scope.gsReveal(bodyRef.current, cur);
|
|
17807
|
+
}, [cur]);
|
|
17808
|
+
const activate = r => {
|
|
17809
|
+
if (!r) return;
|
|
17810
|
+
if (r.kind === "result" || r.kind === "recent") {
|
|
17811
|
+
close();
|
|
17812
|
+
if (onSelect) onSelect(r.item);
|
|
17813
|
+
if (r.item.onSelect) r.item.onSelect();
|
|
17814
|
+
} else if (r.kind === "prompt") ask(r.text);else if (r.kind === "ask") ask(term);else if (r.kind === "deep") startDeep();
|
|
17815
|
+
};
|
|
17816
|
+
const change = v => {
|
|
17817
|
+
if (deep) exitDeep();
|
|
17818
|
+
setQ(v);
|
|
17819
|
+
setSel(0);
|
|
17820
|
+
if (onInput) onInput(v);
|
|
17821
|
+
};
|
|
17822
|
+
const pickChip = v => {
|
|
17823
|
+
now.current = true;
|
|
17824
|
+
change(v);
|
|
17825
|
+
};
|
|
17826
|
+
const key = e => {
|
|
17827
|
+
if (e.nativeEvent && e.nativeEvent.isComposing) return;
|
|
17828
|
+
const n = rows.length;
|
|
17829
|
+
if (e.key === "ArrowDown" || e.key === "ArrowUp") {
|
|
17830
|
+
if (!n) return;
|
|
17831
|
+
e.preventDefault();
|
|
17832
|
+
setSel((cur + (e.key === "ArrowDown" ? 1 : -1) + n) % n);
|
|
17833
|
+
} else if (e.key === "Enter") {
|
|
17834
|
+
e.preventDefault();
|
|
17835
|
+
if (__ds_scope.gsMod(e, mac)) ask(term);else activate(rows[cur]);
|
|
17836
|
+
} else if (e.key === "Escape") {
|
|
17837
|
+
e.preventDefault();
|
|
17838
|
+
if (deep) exitDeep();else close();
|
|
17839
|
+
}
|
|
17840
|
+
};
|
|
17841
|
+
const rowProps = r => ({
|
|
17842
|
+
key: r.i,
|
|
17843
|
+
"data-gs-row": r.i,
|
|
17844
|
+
role: "option",
|
|
17845
|
+
"aria-selected": r.i === cur,
|
|
17846
|
+
style: __ds_scope.gsStyles.row(r.i === cur),
|
|
17847
|
+
onMouseEnter: () => setSel(r.i),
|
|
17848
|
+
onMouseDown: e => e.preventDefault(),
|
|
17849
|
+
onClick: () => activate(r)
|
|
17850
|
+
});
|
|
17851
|
+
const head = r => r.head ? /*#__PURE__*/React.createElement("div", {
|
|
17852
|
+
key: "h" + r.i,
|
|
17853
|
+
style: __ds_scope.gsStyles.head
|
|
17854
|
+
}, /*#__PURE__*/React.createElement("span", null, r.head.label), r.head.more ? /*#__PURE__*/React.createElement("button", {
|
|
17855
|
+
type: "button",
|
|
17856
|
+
style: __ds_scope.gsStyles.more,
|
|
17857
|
+
onMouseDown: e => e.preventDefault(),
|
|
17858
|
+
onClick: () => setScope(r.head.more.scope)
|
|
17859
|
+
}, __ds_scope.gsFill(L.viewAll, {
|
|
17860
|
+
n: r.head.more.n
|
|
17861
|
+
})) : null) : null;
|
|
17862
|
+
const enter = r => r.i === cur ? /*#__PURE__*/React.createElement(__ds_scope.Kbd, {
|
|
17863
|
+
keys: ["enter"]
|
|
17864
|
+
}) : null;
|
|
17865
|
+
const itemRow = (r, mark) => {
|
|
17866
|
+
const it = r.item,
|
|
17867
|
+
k = it.kind || "feature",
|
|
17868
|
+
parts = mark ? __ds_scope.gsSplit(it.title, term) : [it.title, "", ""];
|
|
17869
|
+
return /*#__PURE__*/React.createElement(React.Fragment, {
|
|
17870
|
+
key: r.i
|
|
17871
|
+
}, head(r), /*#__PURE__*/React.createElement("div", rowProps(r), /*#__PURE__*/React.createElement("span", {
|
|
17872
|
+
style: __ds_scope.gsStyles.tile(k === "document" ? it.tone : null)
|
|
17873
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
17874
|
+
name: it.icon || __ds_scope.GS_ICONS[k],
|
|
17875
|
+
size: 16
|
|
17876
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
17877
|
+
style: __ds_scope.gsStyles.text
|
|
17878
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
17879
|
+
style: __ds_scope.gsStyles.title
|
|
17880
|
+
}, parts[0], parts[1] ? /*#__PURE__*/React.createElement("span", {
|
|
17881
|
+
style: __ds_scope.gsStyles.mark
|
|
17882
|
+
}, parts[1]) : null, parts[2]), it.sub ? /*#__PURE__*/React.createElement("span", {
|
|
17883
|
+
style: __ds_scope.gsStyles.sub
|
|
17884
|
+
}, it.sub) : null), it.meta ? /*#__PURE__*/React.createElement("span", {
|
|
17885
|
+
style: __ds_scope.gsStyles.meta
|
|
17886
|
+
}, it.meta) : null, enter(r)));
|
|
17887
|
+
};
|
|
17888
|
+
let body;
|
|
17889
|
+
if (deep) {
|
|
17890
|
+
const steps = deep.steps || [],
|
|
17891
|
+
n = steps.length,
|
|
17892
|
+
ri = steps.findIndex(s => s.state === "running"),
|
|
17893
|
+
run = steps[ri];
|
|
17894
|
+
body = /*#__PURE__*/React.createElement("div", {
|
|
17895
|
+
style: {
|
|
17896
|
+
...__ds_scope.gsStyles.body,
|
|
17897
|
+
padding: 0
|
|
17898
|
+
}
|
|
17899
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
17900
|
+
style: __ds_scope.gsStyles.deep
|
|
17901
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
17902
|
+
style: __ds_scope.gsStyles.deepHead
|
|
17903
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
17904
|
+
style: __ds_scope.gsStyles.tile()
|
|
17905
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
17906
|
+
name: "text-search",
|
|
17907
|
+
size: 16
|
|
17908
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
17909
|
+
style: __ds_scope.gsStyles.text
|
|
17910
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
17911
|
+
style: __ds_scope.gsStyles.deepTitle
|
|
17912
|
+
}, __ds_scope.gsFill(L.deepTitle, {
|
|
17913
|
+
q: deep.query
|
|
17914
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
17915
|
+
style: __ds_scope.gsStyles.sub
|
|
17916
|
+
}, deep.status === "done" ? __ds_scope.gsFill(L.doneStatus, {
|
|
17917
|
+
t: deep.elapsed || "",
|
|
17918
|
+
n: (deep.sources || []).length
|
|
17919
|
+
}) : L.running))), n ? /*#__PURE__*/React.createElement("div", {
|
|
17920
|
+
style: __ds_scope.gsStyles.steps
|
|
17921
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
17922
|
+
type: "button",
|
|
17923
|
+
"data-wash": "",
|
|
17924
|
+
"aria-expanded": stepsOpen,
|
|
17925
|
+
style: __ds_scope.gsStyles.toggle,
|
|
17926
|
+
onClick: () => setStepsOpen(!stepsOpen)
|
|
17927
|
+
}, deep.status === "done" || !run ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
17928
|
+
style: {
|
|
17929
|
+
...__ds_scope.gsStyles.stepIcon,
|
|
17930
|
+
color: "var(--success)"
|
|
17931
|
+
}
|
|
17932
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
17933
|
+
name: "circle-check",
|
|
17934
|
+
size: 14
|
|
17935
|
+
})), /*#__PURE__*/React.createElement("span", null, __ds_scope.gsFill(L.stepsDone, {
|
|
17936
|
+
n
|
|
17937
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
17938
|
+
style: __ds_scope.gsStyles.muted
|
|
17939
|
+
}, deep.elapsed)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
17940
|
+
style: __ds_scope.gsStyles.stepIcon
|
|
17941
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Spinner, {
|
|
17942
|
+
size: 12,
|
|
17943
|
+
color: "var(--text-secondary)"
|
|
17944
|
+
})), /*#__PURE__*/React.createElement("span", null, run.label, "\u2026"), /*#__PURE__*/React.createElement("span", {
|
|
17945
|
+
style: __ds_scope.gsStyles.muted
|
|
17946
|
+
}, __ds_scope.gsFill(L.stepOf, {
|
|
17947
|
+
i: ri + 1,
|
|
17948
|
+
n
|
|
17949
|
+
}))), /*#__PURE__*/React.createElement("span", {
|
|
17950
|
+
style: __ds_scope.gsStyles.grow
|
|
17951
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
17952
|
+
style: {
|
|
17953
|
+
...__ds_scope.gsStyles.stepIcon,
|
|
17954
|
+
color: "var(--text-muted)",
|
|
17955
|
+
transform: stepsOpen ? "rotate(180deg)" : "none"
|
|
17956
|
+
}
|
|
17957
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
17958
|
+
name: "chevron-down",
|
|
17959
|
+
size: 14
|
|
17960
|
+
}))), stepsOpen ? steps.map((s, i) => /*#__PURE__*/React.createElement("div", {
|
|
17961
|
+
key: i,
|
|
17962
|
+
style: __ds_scope.gsStyles.stepLine
|
|
17963
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
17964
|
+
style: {
|
|
17965
|
+
...__ds_scope.gsStyles.stepIcon,
|
|
17966
|
+
color: "var(--success)"
|
|
17967
|
+
}
|
|
17968
|
+
}, s.state === "done" ? /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
17969
|
+
name: "circle-check",
|
|
17970
|
+
size: 14
|
|
17971
|
+
}) : s.state === "running" ? /*#__PURE__*/React.createElement(__ds_scope.Spinner, {
|
|
17972
|
+
size: 12,
|
|
17973
|
+
color: "var(--text-secondary)"
|
|
17974
|
+
}) : /*#__PURE__*/React.createElement("span", {
|
|
17975
|
+
style: __ds_scope.gsStyles.pending
|
|
17976
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
17977
|
+
style: {
|
|
17978
|
+
color: s.state === "pending" ? "var(--text-muted)" : "var(--text-body)"
|
|
17979
|
+
}
|
|
17980
|
+
}, s.label), s.meta ? /*#__PURE__*/React.createElement("span", {
|
|
17981
|
+
style: __ds_scope.gsStyles.muted
|
|
17982
|
+
}, s.meta) : null)) : null) : null, deep.conclusion ? /*#__PURE__*/React.createElement("div", {
|
|
17983
|
+
style: __ds_scope.gsStyles.conclusion
|
|
17984
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
17985
|
+
style: __ds_scope.gsStyles.concLabel
|
|
17986
|
+
}, L.conclusion), /*#__PURE__*/React.createElement("div", {
|
|
17987
|
+
style: __ds_scope.gsStyles.concText
|
|
17988
|
+
}, [].concat(deep.conclusion).map((p, i) => /*#__PURE__*/React.createElement("span", {
|
|
17989
|
+
key: i
|
|
17990
|
+
}, p))), deep.sources && deep.sources.length ? /*#__PURE__*/React.createElement("div", {
|
|
17991
|
+
style: __ds_scope.gsStyles.sources
|
|
17992
|
+
}, deep.sources.map((s, i) => /*#__PURE__*/React.createElement("span", {
|
|
17993
|
+
key: i,
|
|
17994
|
+
style: __ds_scope.gsStyles.source
|
|
17995
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
17996
|
+
name: "file-text",
|
|
17997
|
+
size: 12
|
|
17998
|
+
}), s))) : null, /*#__PURE__*/React.createElement("div", {
|
|
17999
|
+
"data-size": "sm",
|
|
18000
|
+
style: __ds_scope.gsStyles.actions
|
|
18001
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Button, {
|
|
18002
|
+
variant: "primary-soft",
|
|
18003
|
+
icon: "file-text",
|
|
18004
|
+
onClick: deep.onOpenReport
|
|
18005
|
+
}, L.openReport), /*#__PURE__*/React.createElement(__ds_scope.Button, {
|
|
18006
|
+
variant: "ghost",
|
|
18007
|
+
icon: "prophet-sparkle",
|
|
18008
|
+
onClick: () => ask(deep.query)
|
|
18009
|
+
}, L.followUp))) : null));
|
|
18010
|
+
} else if (!term) {
|
|
18011
|
+
body = /*#__PURE__*/React.createElement("div", {
|
|
18012
|
+
ref: bodyRef,
|
|
18013
|
+
role: "listbox",
|
|
18014
|
+
style: __ds_scope.gsStyles.body
|
|
18015
|
+
}, recentSearches.length ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
18016
|
+
style: __ds_scope.gsStyles.head
|
|
18017
|
+
}, /*#__PURE__*/React.createElement("span", null, L.recentSearches)), /*#__PURE__*/React.createElement("div", {
|
|
18018
|
+
style: __ds_scope.gsStyles.chips
|
|
18019
|
+
}, recentSearches.map(s => /*#__PURE__*/React.createElement("button", {
|
|
18020
|
+
key: s,
|
|
18021
|
+
type: "button",
|
|
18022
|
+
style: __ds_scope.gsStyles.chip,
|
|
18023
|
+
onMouseDown: e => e.preventDefault(),
|
|
18024
|
+
onClick: () => pickChip(s)
|
|
18025
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18026
|
+
style: __ds_scope.gsStyles.chipIcon
|
|
18027
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
18028
|
+
name: "history",
|
|
18029
|
+
size: 12
|
|
18030
|
+
})), s)))) : null, rows.map(r => r.kind === "recent" ? itemRow(r, false) : /*#__PURE__*/React.createElement(React.Fragment, {
|
|
18031
|
+
key: r.i
|
|
18032
|
+
}, head(r), /*#__PURE__*/React.createElement("div", rowProps(r), /*#__PURE__*/React.createElement(AiTile, {
|
|
18033
|
+
on: r.i === cur
|
|
18034
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
18035
|
+
style: __ds_scope.gsStyles.text
|
|
18036
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18037
|
+
style: __ds_scope.gsStyles.title
|
|
18038
|
+
}, r.text)), enter(r)))));
|
|
18039
|
+
} else {
|
|
18040
|
+
const res = rows.filter(r => r.kind === "result");
|
|
18041
|
+
body = /*#__PURE__*/React.createElement("div", {
|
|
18042
|
+
ref: bodyRef,
|
|
18043
|
+
role: "listbox",
|
|
18044
|
+
style: __ds_scope.gsStyles.body
|
|
18045
|
+
}, loading ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
18046
|
+
style: __ds_scope.gsStyles.head
|
|
18047
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Skeleton, {
|
|
18048
|
+
width: 64,
|
|
18049
|
+
height: 10
|
|
18050
|
+
})), [0, 1, 2, 3].map(i => /*#__PURE__*/React.createElement("div", {
|
|
18051
|
+
key: i,
|
|
18052
|
+
style: __ds_scope.gsStyles.skelRow
|
|
18053
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Skeleton, {
|
|
18054
|
+
width: 32,
|
|
18055
|
+
height: 32,
|
|
18056
|
+
radius: "var(--radius-md)"
|
|
18057
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
18058
|
+
style: __ds_scope.gsStyles.skelText
|
|
18059
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Skeleton, {
|
|
18060
|
+
width: "46%",
|
|
18061
|
+
height: 12
|
|
18062
|
+
}), /*#__PURE__*/React.createElement(__ds_scope.Skeleton, {
|
|
18063
|
+
width: "28%",
|
|
18064
|
+
height: 10
|
|
18065
|
+
}))))) : found && !res.length ? /*#__PURE__*/React.createElement("div", {
|
|
18066
|
+
style: __ds_scope.gsStyles.empty
|
|
18067
|
+
}, L.noResults) : res.map(r => itemRow(r, true)));
|
|
18068
|
+
}
|
|
18069
|
+
const pinned = !deep && term ? /*#__PURE__*/React.createElement("div", {
|
|
18070
|
+
style: __ds_scope.gsStyles.pinned
|
|
18071
|
+
}, rows.filter(r => r.kind === "ask" || r.kind === "deep").map(r => r.kind === "ask" ? /*#__PURE__*/React.createElement("div", rowProps(r), /*#__PURE__*/React.createElement(AiTile, {
|
|
18072
|
+
on: r.i === cur
|
|
18073
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
18074
|
+
style: __ds_scope.gsStyles.text
|
|
18075
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18076
|
+
style: __ds_scope.gsStyles.title
|
|
18077
|
+
}, __ds_scope.gsFill(L.askRow, {
|
|
18078
|
+
q: term
|
|
18079
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
18080
|
+
style: __ds_scope.gsStyles.sub
|
|
18081
|
+
}, L.askSub)), /*#__PURE__*/React.createElement(__ds_scope.Kbd, {
|
|
18082
|
+
keys: ["mod", "enter"]
|
|
18083
|
+
})) : /*#__PURE__*/React.createElement("div", rowProps(r), /*#__PURE__*/React.createElement("span", {
|
|
18084
|
+
style: __ds_scope.gsStyles.tile()
|
|
18085
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
18086
|
+
name: "text-search",
|
|
18087
|
+
size: 16
|
|
18088
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
18089
|
+
style: __ds_scope.gsStyles.text
|
|
18090
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18091
|
+
style: __ds_scope.gsStyles.title
|
|
18092
|
+
}, __ds_scope.gsFill(L.deepRow, {
|
|
18093
|
+
q: term
|
|
18094
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
18095
|
+
style: __ds_scope.gsStyles.sub
|
|
18096
|
+
}, L.deepSub)), enter(r)))) : null;
|
|
18097
|
+
const card = /*#__PURE__*/React.createElement("div", {
|
|
18098
|
+
role: "dialog",
|
|
18099
|
+
"aria-modal": inline ? undefined : "true",
|
|
18100
|
+
"aria-label": L.input,
|
|
18101
|
+
"data-size": "md",
|
|
18102
|
+
onKeyDown: key,
|
|
18103
|
+
style: {
|
|
18104
|
+
...__ds_scope.gsStyles.card,
|
|
18105
|
+
...(inline ? null : __ds_scope.gsStyles.cardFixed(pos)),
|
|
18106
|
+
...(inline ? style : null)
|
|
18107
|
+
}
|
|
18108
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
18109
|
+
style: __ds_scope.gsStyles.inputRow
|
|
18110
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18111
|
+
style: __ds_scope.gsStyles.lead
|
|
18112
|
+
}, loading ? /*#__PURE__*/React.createElement(__ds_scope.Spinner, {
|
|
18113
|
+
size: 14,
|
|
18114
|
+
color: "var(--text-secondary)"
|
|
18115
|
+
}) : /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
18116
|
+
name: deep ? "text-search" : "search",
|
|
18117
|
+
size: 16
|
|
18118
|
+
})), /*#__PURE__*/React.createElement("input", {
|
|
18119
|
+
ref: inputRef,
|
|
18120
|
+
value: q,
|
|
18121
|
+
onChange: e => change(e.target.value),
|
|
18122
|
+
placeholder: inputPlaceholder || L.input,
|
|
18123
|
+
"aria-label": inputPlaceholder || L.input,
|
|
18124
|
+
style: __ds_scope.gsStyles.input
|
|
18125
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
18126
|
+
style: __ds_scope.gsStyles.trail
|
|
18127
|
+
}, q ? /*#__PURE__*/React.createElement(__ds_scope.IconButton, {
|
|
18128
|
+
icon: "x",
|
|
18129
|
+
muted: true,
|
|
18130
|
+
label: L.clear,
|
|
18131
|
+
title: L.clear,
|
|
18132
|
+
onClick: () => {
|
|
18133
|
+
change("");
|
|
18134
|
+
if (inputRef.current) inputRef.current.focus();
|
|
18135
|
+
}
|
|
18136
|
+
}) : null, /*#__PURE__*/React.createElement(__ds_scope.Button, {
|
|
18137
|
+
variant: "ai",
|
|
18138
|
+
onClick: () => ask(term)
|
|
18139
|
+
}, L.ask))), term && !deep ? /*#__PURE__*/React.createElement("div", {
|
|
18140
|
+
style: __ds_scope.gsStyles.scope
|
|
18141
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.SegmentedControl, {
|
|
18142
|
+
size: "sm",
|
|
18143
|
+
options: L.scopes,
|
|
18144
|
+
value: L.scopes[scope],
|
|
18145
|
+
onChange: v => setScope(Math.max(0, L.scopes.indexOf(v)))
|
|
18146
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
18147
|
+
style: __ds_scope.gsStyles.count
|
|
18148
|
+
}, loading ? L.searching : found ? __ds_scope.gsFill(L.results, {
|
|
18149
|
+
n: total
|
|
18150
|
+
}) : "")) : null, body, pinned, /*#__PURE__*/React.createElement("div", {
|
|
18151
|
+
style: __ds_scope.gsStyles.footer
|
|
18152
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18153
|
+
style: __ds_scope.gsStyles.hints
|
|
18154
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18155
|
+
style: __ds_scope.gsStyles.hint
|
|
18156
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Kbd, {
|
|
18157
|
+
keys: ["↑", "↓"]
|
|
18158
|
+
}), L.select), /*#__PURE__*/React.createElement("span", {
|
|
18159
|
+
style: __ds_scope.gsStyles.hint
|
|
18160
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Kbd, {
|
|
18161
|
+
keys: ["mod", "enter"]
|
|
18162
|
+
}), L.ask), /*#__PURE__*/React.createElement("span", {
|
|
18163
|
+
style: __ds_scope.gsStyles.hint
|
|
18164
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Kbd, {
|
|
18165
|
+
keys: ["esc"]
|
|
18166
|
+
}), L.close)), /*#__PURE__*/React.createElement("span", {
|
|
18167
|
+
style: __ds_scope.gsStyles.hint
|
|
18168
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
18169
|
+
name: "lock",
|
|
18170
|
+
size: 12
|
|
18171
|
+
}), L.privacy)));
|
|
18172
|
+
if (inline) return card;
|
|
18173
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
|
|
18174
|
+
ref: fieldRef,
|
|
18175
|
+
type: "button",
|
|
18176
|
+
"data-field": "",
|
|
18177
|
+
"aria-haspopup": "dialog",
|
|
18178
|
+
"aria-expanded": open,
|
|
18179
|
+
onClick: openCard,
|
|
18180
|
+
onMouseEnter: () => setHover(true),
|
|
18181
|
+
onMouseLeave: () => setHover(false),
|
|
18182
|
+
style: {
|
|
18183
|
+
...__ds_scope.gsStyles.field(hover),
|
|
18184
|
+
...style
|
|
18185
|
+
}
|
|
18186
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
18187
|
+
style: __ds_scope.gsStyles.fieldIcon
|
|
18188
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.Icon, {
|
|
18189
|
+
name: "search",
|
|
18190
|
+
size: 16
|
|
18191
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
18192
|
+
style: __ds_scope.gsStyles.fieldLabel
|
|
18193
|
+
}, placeholder || L.field), /*#__PURE__*/React.createElement(__ds_scope.Kbd, {
|
|
18194
|
+
keys: ["mod", "K"]
|
|
18195
|
+
})), open ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
18196
|
+
style: __ds_scope.gsStyles.scrim,
|
|
18197
|
+
onMouseDown: close
|
|
18198
|
+
}), card) : null);
|
|
18199
|
+
}
|
|
18200
|
+
Object.assign(__ds_scope, { GLOBAL_SEARCH_LABELS: __ds_scope.GLOBAL_SEARCH_LABELS, GlobalSearch });
|
|
18201
|
+
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/GlobalSearch.jsx", error: String((e && e.message) || e) }); }
|
|
18202
|
+
|
|
16361
18203
|
// components/navigation/TopBar.jsx
|
|
16362
18204
|
try { (() => {
|
|
18205
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
16363
18206
|
const TXT = {
|
|
16364
18207
|
fontFamily: "var(--font-sans)",
|
|
16365
18208
|
fontSize: "var(--text-base)",
|
|
@@ -16497,13 +18340,14 @@ function UserMenu({
|
|
|
16497
18340
|
}) : null);
|
|
16498
18341
|
}
|
|
16499
18342
|
|
|
16500
|
-
/** 56px top bar:
|
|
16501
|
-
* The user trigger opens a UserMenu below it (closes on outside click). actions replaces the right-hand group entirely. */
|
|
18343
|
+
/** 56px top bar: GlobalSearch on the left (⌘K / Ctrl K, Prophet AI hand-off via onAi); notifications, help and the user trigger on the right.
|
|
18344
|
+
* The user trigger opens a UserMenu below it (closes on outside click). actions replaces the right-hand group entirely. search passes props to GlobalSearch. */
|
|
16502
18345
|
function TopBar({
|
|
16503
|
-
placeholder
|
|
18346
|
+
placeholder,
|
|
16504
18347
|
onSearch,
|
|
18348
|
+
search,
|
|
16505
18349
|
actions,
|
|
16506
|
-
aiLabel
|
|
18350
|
+
aiLabel,
|
|
16507
18351
|
onAi,
|
|
16508
18352
|
onNotifications,
|
|
16509
18353
|
onHelp,
|
|
@@ -16547,15 +18391,16 @@ function TopBar({
|
|
|
16547
18391
|
position: "relative",
|
|
16548
18392
|
...style
|
|
16549
18393
|
}
|
|
16550
|
-
}, /*#__PURE__*/React.createElement(__ds_scope.
|
|
16551
|
-
bare: true,
|
|
18394
|
+
}, /*#__PURE__*/React.createElement(__ds_scope.GlobalSearch, _extends({
|
|
16552
18395
|
placeholder: placeholder,
|
|
16553
|
-
|
|
16554
|
-
|
|
16555
|
-
|
|
16556
|
-
|
|
16557
|
-
|
|
16558
|
-
|
|
18396
|
+
onInput: onSearch,
|
|
18397
|
+
onAsk: onAi
|
|
18398
|
+
}, search, {
|
|
18399
|
+
labels: aiLabel ? {
|
|
18400
|
+
...(search && search.labels),
|
|
18401
|
+
ask: aiLabel
|
|
18402
|
+
} : search && search.labels
|
|
18403
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
16559
18404
|
ref: ref,
|
|
16560
18405
|
style: {
|
|
16561
18406
|
display: "flex",
|
|
@@ -16563,11 +18408,7 @@ function TopBar({
|
|
|
16563
18408
|
gap: 8,
|
|
16564
18409
|
flexShrink: 0
|
|
16565
18410
|
}
|
|
16566
|
-
}, actions || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(__ds_scope.
|
|
16567
|
-
variant: "dark",
|
|
16568
|
-
icon: "ai",
|
|
16569
|
-
onClick: onAi
|
|
16570
|
-
}, aiLabel), /*#__PURE__*/React.createElement(__ds_scope.IconButton, {
|
|
18411
|
+
}, actions || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(__ds_scope.IconButton, {
|
|
16571
18412
|
icon: "bell",
|
|
16572
18413
|
label: notificationsLabel,
|
|
16573
18414
|
title: notificationsLabel,
|
|
@@ -16988,7 +18829,7 @@ Object.assign(__ds_scope, { PaletteItem, PaletteListItem, PIPELINE_CATALOG: __ds
|
|
|
16988
18829
|
// components/index.js
|
|
16989
18830
|
try { (() => {
|
|
16990
18831
|
|
|
16991
|
-
Object.assign(__ds_scope, { ActionChip: __ds_scope.ActionChip, Button: __ds_scope.Button, ButtonGroup: __ds_scope.ButtonGroup, IconButton: __ds_scope.IconButton, Bar3D: __ds_scope.Bar3D, BarChart: __ds_scope.BarChart, BarList: __ds_scope.BarList, BoxPlot: __ds_scope.BoxPlot, BulletChart: __ds_scope.BulletChart, CandlestickChart: __ds_scope.CandlestickChart, ChartKit: __ds_scope.ChartKit, ChartLegend: __ds_scope.ChartLegend, ChartTooltip: __ds_scope.ChartTooltip, PlotGrid: __ds_scope.PlotGrid, XLabels: __ds_scope.XLabels, ChordChart: __ds_scope.ChordChart, DonutChart: __ds_scope.DonutChart, FunnelChart: __ds_scope.FunnelChart, GanttChart: __ds_scope.GanttChart, GaugeChart: __ds_scope.GaugeChart, HeatmapChart: __ds_scope.HeatmapChart, Histogram: __ds_scope.Histogram, LineChart: __ds_scope.LineChart, ParetoChart: __ds_scope.ParetoChart, Pie3D: __ds_scope.Pie3D, RadarChart: __ds_scope.RadarChart, Ribbon3D: __ds_scope.Ribbon3D, SankeyChart: __ds_scope.SankeyChart, Scatter3D: __ds_scope.Scatter3D, ScatterChart: __ds_scope.ScatterChart, Sparkline: __ds_scope.Sparkline, SunburstChart: __ds_scope.SunburstChart, Surface3D: __ds_scope.Surface3D, TreemapChart: __ds_scope.TreemapChart, WaterfallChart: __ds_scope.WaterfallChart, WorldMap: __ds_scope.WorldMap, CodeBlock: __ds_scope.CodeBlock, DiffValue: __ds_scope.DiffValue, FilterBar: __ds_scope.FilterBar, KeyValue: __ds_scope.KeyValue, KeyValueList: __ds_scope.KeyValueList, ListRow: __ds_scope.ListRow, Pagination: __ds_scope.Pagination, SmartTable: __ds_scope.SmartTable, Spreadsheet: __ds_scope.Spreadsheet, Table: __ds_scope.Table, DataTable: __ds_scope.Table, Avatar: __ds_scope.Avatar, AvatarGroup: __ds_scope.AvatarGroup, Badge: __ds_scope.Badge, IconTile: __ds_scope.IconTile, StatusBadge: __ds_scope.StatusBadge, Card: __ds_scope.Card, StatCard: __ds_scope.StatCard, Divider: __ds_scope.Divider, Kbd: __ds_scope.Kbd, AreaChart: __ds_scope.AreaChart, Donut: __ds_scope.Donut, MiniBars: __ds_scope.MiniBars, ProgressBar: __ds_scope.ProgressBar, Tag: __ds_scope.Tag, Accordion: __ds_scope.Accordion, ActivityItem: __ds_scope.ActivityItem, DotActivity: __ds_scope.DotActivity, LogViewer: __ds_scope.LogViewer, Alert: __ds_scope.Alert, EmptyState: __ds_scope.EmptyState, Skeleton: __ds_scope.Skeleton, Spinner: __ds_scope.Spinner, Banner: __ds_scope.Banner, ContextMenu: __ds_scope.ContextMenu, Drawer: __ds_scope.Drawer, Menu: __ds_scope.Menu, Modal: __ds_scope.Modal, Toast: __ds_scope.Toast, ToastStack: __ds_scope.ToastStack, Tooltip: __ds_scope.Tooltip, Stepper: __ds_scope.Stepper, Timeline: __ds_scope.Timeline, Checkbox: __ds_scope.Checkbox, Combobox: __ds_scope.Combobox, DatePicker: __ds_scope.DatePicker, Dropzone: __ds_scope.Dropzone, Field: __ds_scope.Field, Input: __ds_scope.Input, Textarea: __ds_scope.Textarea, MultiSelect: __ds_scope.MultiSelect, NumberStepper: __ds_scope.NumberStepper, Radio: __ds_scope.Radio, RadioGroup: __ds_scope.RadioGroup, RelativeTimePicker: __ds_scope.RelativeTimePicker, SearchInput: __ds_scope.SearchInput, Select: __ds_scope.Select, Slider: __ds_scope.Slider, Switch: __ds_scope.Switch, ICON_PATHS: __ds_scope.ICON_PATHS, Icon: __ds_scope.Icon, LUCIDE_VERSION: __ds_scope.LUCIDE_VERSION, Lucide: __ds_scope.Lucide, loadLucide: __ds_scope.loadLucide, setLucideSource: __ds_scope.setLucideSource, Unicon: __ds_scope.Unicon, Breadcrumb: __ds_scope.Breadcrumb, ThemeToggle: __ds_scope.ThemeToggle, applyStoredTheme: __ds_scope.applyStoredTheme, DocTree: __ds_scope.DocTree, SidePanel: __ds_scope.SidePanel, KEYBRICKS_MGMT: __ds_scope.KEYBRICKS_MGMT, KEYBRICKS_NAV: __ds_scope.KEYBRICKS_NAV, KEYBRICKS_NAV_FOOTER: __ds_scope.KEYBRICKS_NAV_FOOTER, SIDEBAR_COLORS: __ds_scope.SIDEBAR_COLORS, Sidebar: __ds_scope.Sidebar, PageHeading: __ds_scope.PageHeading, PageToolbar: __ds_scope.PageToolbar, THEME_OPTIONS: __ds_scope.THEME_OPTIONS, TopBar: __ds_scope.TopBar, UserMenu: __ds_scope.UserMenu, Tree: __ds_scope.Tree, ConfigPanel: __ds_scope.ConfigPanel, DataPreview: __ds_scope.DataPreview, NodeCard: __ds_scope.NodeCard, Port: __ds_scope.Port, PortLabel: __ds_scope.PortLabel, PIPELINE_CATALOG: __ds_scope.PIPELINE_CATALOG, PaletteItem: __ds_scope.PaletteItem, PaletteListItem: __ds_scope.PaletteListItem, PalettePanel: __ds_scope.PalettePanel, PipelineCanvas: __ds_scope.PipelineCanvas, ZoomControls: __ds_scope.ZoomControls, SegmentedControl: __ds_scope.SegmentedControl, CountBadge: __ds_scope.CountBadge, PanelTabs: __ds_scope.PanelTabs, PillTabs: __ds_scope.PillTabs, Tabs: __ds_scope.Tabs, ViewToggle: __ds_scope.ViewToggle });
|
|
18832
|
+
Object.assign(__ds_scope, { ActionChip: __ds_scope.ActionChip, Button: __ds_scope.Button, ButtonGroup: __ds_scope.ButtonGroup, IconButton: __ds_scope.IconButton, Bar3D: __ds_scope.Bar3D, BarChart: __ds_scope.BarChart, BarList: __ds_scope.BarList, BoxPlot: __ds_scope.BoxPlot, BulletChart: __ds_scope.BulletChart, CandlestickChart: __ds_scope.CandlestickChart, ChartKit: __ds_scope.ChartKit, ChartLegend: __ds_scope.ChartLegend, ChartTooltip: __ds_scope.ChartTooltip, PlotGrid: __ds_scope.PlotGrid, XLabels: __ds_scope.XLabels, ChordChart: __ds_scope.ChordChart, DonutChart: __ds_scope.DonutChart, FunnelChart: __ds_scope.FunnelChart, GanttChart: __ds_scope.GanttChart, GaugeChart: __ds_scope.GaugeChart, HeatmapChart: __ds_scope.HeatmapChart, Histogram: __ds_scope.Histogram, LineChart: __ds_scope.LineChart, ParetoChart: __ds_scope.ParetoChart, Pie3D: __ds_scope.Pie3D, RadarChart: __ds_scope.RadarChart, Ribbon3D: __ds_scope.Ribbon3D, SankeyChart: __ds_scope.SankeyChart, Scatter3D: __ds_scope.Scatter3D, ScatterChart: __ds_scope.ScatterChart, Sparkline: __ds_scope.Sparkline, SunburstChart: __ds_scope.SunburstChart, Surface3D: __ds_scope.Surface3D, TreemapChart: __ds_scope.TreemapChart, WaterfallChart: __ds_scope.WaterfallChart, WorldMap: __ds_scope.WorldMap, CodeBlock: __ds_scope.CodeBlock, DiffValue: __ds_scope.DiffValue, FilterBar: __ds_scope.FilterBar, KeyValue: __ds_scope.KeyValue, KeyValueList: __ds_scope.KeyValueList, ListRow: __ds_scope.ListRow, Pagination: __ds_scope.Pagination, SmartTable: __ds_scope.SmartTable, Spreadsheet: __ds_scope.Spreadsheet, Table: __ds_scope.Table, DataTable: __ds_scope.Table, Avatar: __ds_scope.Avatar, AvatarGroup: __ds_scope.AvatarGroup, Badge: __ds_scope.Badge, IconTile: __ds_scope.IconTile, StatusBadge: __ds_scope.StatusBadge, Card: __ds_scope.Card, StatCard: __ds_scope.StatCard, Divider: __ds_scope.Divider, Kbd: __ds_scope.Kbd, AreaChart: __ds_scope.AreaChart, Donut: __ds_scope.Donut, MiniBars: __ds_scope.MiniBars, ProgressBar: __ds_scope.ProgressBar, Tag: __ds_scope.Tag, Accordion: __ds_scope.Accordion, ActivityItem: __ds_scope.ActivityItem, DotActivity: __ds_scope.DotActivity, LogViewer: __ds_scope.LogViewer, Alert: __ds_scope.Alert, EmptyState: __ds_scope.EmptyState, Skeleton: __ds_scope.Skeleton, Spinner: __ds_scope.Spinner, Banner: __ds_scope.Banner, ContextMenu: __ds_scope.ContextMenu, Drawer: __ds_scope.Drawer, Menu: __ds_scope.Menu, Modal: __ds_scope.Modal, Toast: __ds_scope.Toast, ToastStack: __ds_scope.ToastStack, Tooltip: __ds_scope.Tooltip, Stepper: __ds_scope.Stepper, Timeline: __ds_scope.Timeline, Checkbox: __ds_scope.Checkbox, Combobox: __ds_scope.Combobox, DatePicker: __ds_scope.DatePicker, Dropzone: __ds_scope.Dropzone, Field: __ds_scope.Field, GLOBAL_SEARCH_LABELS: __ds_scope.GLOBAL_SEARCH_LABELS, GlobalSearch: __ds_scope.GlobalSearch, Input: __ds_scope.Input, Textarea: __ds_scope.Textarea, MultiSelect: __ds_scope.MultiSelect, NumberStepper: __ds_scope.NumberStepper, Radio: __ds_scope.Radio, RadioGroup: __ds_scope.RadioGroup, RelativeTimePicker: __ds_scope.RelativeTimePicker, SearchInput: __ds_scope.SearchInput, Select: __ds_scope.Select, Slider: __ds_scope.Slider, Switch: __ds_scope.Switch, ICON_PATHS: __ds_scope.ICON_PATHS, Icon: __ds_scope.Icon, LUCIDE_VERSION: __ds_scope.LUCIDE_VERSION, Lucide: __ds_scope.Lucide, loadLucide: __ds_scope.loadLucide, setLucideSource: __ds_scope.setLucideSource, Unicon: __ds_scope.Unicon, Breadcrumb: __ds_scope.Breadcrumb, ThemeToggle: __ds_scope.ThemeToggle, applyStoredTheme: __ds_scope.applyStoredTheme, DocTree: __ds_scope.DocTree, SidePanel: __ds_scope.SidePanel, KEYBRICKS_MGMT: __ds_scope.KEYBRICKS_MGMT, KEYBRICKS_NAV: __ds_scope.KEYBRICKS_NAV, KEYBRICKS_NAV_FOOTER: __ds_scope.KEYBRICKS_NAV_FOOTER, SIDEBAR_COLORS: __ds_scope.SIDEBAR_COLORS, Sidebar: __ds_scope.Sidebar, PageHeading: __ds_scope.PageHeading, PageToolbar: __ds_scope.PageToolbar, THEME_OPTIONS: __ds_scope.THEME_OPTIONS, TopBar: __ds_scope.TopBar, UserMenu: __ds_scope.UserMenu, Tree: __ds_scope.Tree, ConfigPanel: __ds_scope.ConfigPanel, DataPreview: __ds_scope.DataPreview, NodeCard: __ds_scope.NodeCard, Port: __ds_scope.Port, PortLabel: __ds_scope.PortLabel, PIPELINE_CATALOG: __ds_scope.PIPELINE_CATALOG, PaletteItem: __ds_scope.PaletteItem, PaletteListItem: __ds_scope.PaletteListItem, PalettePanel: __ds_scope.PalettePanel, PipelineCanvas: __ds_scope.PipelineCanvas, ZoomControls: __ds_scope.ZoomControls, SegmentedControl: __ds_scope.SegmentedControl, CountBadge: __ds_scope.CountBadge, PanelTabs: __ds_scope.PanelTabs, PillTabs: __ds_scope.PillTabs, Tabs: __ds_scope.Tabs, ViewToggle: __ds_scope.ViewToggle });
|
|
16992
18833
|
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/index.js", error: String((e && e.message) || e) }); }
|
|
16993
18834
|
|
|
16994
18835
|
// covers.js
|
|
@@ -17100,13 +18941,31 @@ window.KB_COVERS = function () {
|
|
|
17100
18941
|
borderBottom: "1px solid var(--border-card)",
|
|
17101
18942
|
display: "flex",
|
|
17102
18943
|
alignItems: "center",
|
|
17103
|
-
justifyContent: "flex-end",
|
|
17104
18944
|
padding: "0 16px"
|
|
17105
18945
|
}
|
|
17106
|
-
}, h(
|
|
17107
|
-
|
|
17108
|
-
|
|
17109
|
-
|
|
18946
|
+
}, h("div", {
|
|
18947
|
+
style: {
|
|
18948
|
+
display: "flex",
|
|
18949
|
+
alignItems: "center",
|
|
18950
|
+
gap: 8,
|
|
18951
|
+
height: 32,
|
|
18952
|
+
padding: "0 6px 0 10px",
|
|
18953
|
+
borderRadius: "var(--radius-md)",
|
|
18954
|
+
background: "var(--bg-inset)",
|
|
18955
|
+
color: "var(--text-muted)",
|
|
18956
|
+
fontFamily: "var(--font-sans)",
|
|
18957
|
+
fontSize: "var(--text-base)"
|
|
18958
|
+
}
|
|
18959
|
+
}, h(K.Icon, {
|
|
18960
|
+
name: "search",
|
|
18961
|
+
size: 16
|
|
18962
|
+
}), h("span", {
|
|
18963
|
+
style: {
|
|
18964
|
+
paddingRight: 24
|
|
18965
|
+
}
|
|
18966
|
+
}, "Search"), h(K.Kbd, {
|
|
18967
|
+
keys: ["mod", "K"]
|
|
18968
|
+
})))))],
|
|
17110
18969
|
"banner": [.7, (h, K) => h("div", {
|
|
17111
18970
|
style: {
|
|
17112
18971
|
width: 340
|
|
@@ -17124,6 +18983,9 @@ window.KB_COVERS = function () {
|
|
|
17124
18983
|
}, "Save"), h(K.Button, {
|
|
17125
18984
|
variant: "outline"
|
|
17126
18985
|
}, "Cancel")])],
|
|
18986
|
+
"button-5-ai": [1, (h, K) => h(K.Button, {
|
|
18987
|
+
variant: "ai"
|
|
18988
|
+
}, "Ask Prophet AI")],
|
|
17127
18989
|
"button-4-group": [1, (h, K) => h(K.ButtonGroup, null, h(K.Button, {
|
|
17128
18990
|
variant: "outline"
|
|
17129
18991
|
}, "Day"), h(K.Button, {
|
|
@@ -17304,7 +19166,7 @@ window.KB_COVERS = function () {
|
|
|
17304
19166
|
}]
|
|
17305
19167
|
}))],
|
|
17306
19168
|
"kbd": [1.3, (h, K) => h(K.Kbd, {
|
|
17307
|
-
keys: ["
|
|
19169
|
+
keys: ["mod", "K"]
|
|
17308
19170
|
})],
|
|
17309
19171
|
"listrow": [.8, (h, K) => h("div", {
|
|
17310
19172
|
style: {
|
|
@@ -17410,6 +19272,11 @@ window.KB_COVERS = function () {
|
|
|
17410
19272
|
}, h(K.SearchInput, {
|
|
17411
19273
|
placeholder: "Search pipelines"
|
|
17412
19274
|
}))],
|
|
19275
|
+
"search-global": [.42, (h, K) => h(K.GlobalSearch, {
|
|
19276
|
+
inline: true,
|
|
19277
|
+
prompts: ["Which entity had the largest YoY revenue change in Q3?", "Explain how the FX model translates currencies"],
|
|
19278
|
+
recentSearches: ["revenue bridge", "FX rates"]
|
|
19279
|
+
})],
|
|
17413
19280
|
"segmented-control": [1, (h, K) => h(K.SegmentedControl, {
|
|
17414
19281
|
options: ["Grid", "List", "Board"],
|
|
17415
19282
|
value: "Grid"
|
|
@@ -18085,7 +19952,7 @@ window.KB_CARDS = [{
|
|
|
18085
19952
|
"path": "components/_cards/accordion.card.html",
|
|
18086
19953
|
"group": "Components",
|
|
18087
19954
|
"name": "Accordion",
|
|
18088
|
-
"viewport": "
|
|
19955
|
+
"viewport": "700x332",
|
|
18089
19956
|
"subtitle": "Generic collapsible section — settings/FAQ style",
|
|
18090
19957
|
"zh": "手风琴折叠",
|
|
18091
19958
|
"ja": "アコーディオン",
|
|
@@ -18095,7 +19962,7 @@ window.KB_CARDS = [{
|
|
|
18095
19962
|
"path": "components/_cards/action-chip.card.html",
|
|
18096
19963
|
"group": "Components",
|
|
18097
19964
|
"name": "Action Chip",
|
|
18098
|
-
"viewport": "
|
|
19965
|
+
"viewport": "700x462",
|
|
18099
19966
|
"subtitle": "Tinted bulk-action chips · five tones · size tiers, Latin and CJK",
|
|
18100
19967
|
"zh": "操作胶囊",
|
|
18101
19968
|
"ja": "アクションチップ",
|
|
@@ -18105,7 +19972,7 @@ window.KB_CARDS = [{
|
|
|
18105
19972
|
"path": "components/_cards/activity.card.html",
|
|
18106
19973
|
"group": "Components",
|
|
18107
19974
|
"name": "Activity",
|
|
18108
|
-
"viewport": "
|
|
19975
|
+
"viewport": "700x368",
|
|
18109
19976
|
"subtitle": "ActivityItem rows · DotActivity feed",
|
|
18110
19977
|
"zh": "动态记录",
|
|
18111
19978
|
"ja": "アクティビティ",
|
|
@@ -18115,7 +19982,7 @@ window.KB_CARDS = [{
|
|
|
18115
19982
|
"path": "components/_cards/alert.card.html",
|
|
18116
19983
|
"group": "Components",
|
|
18117
19984
|
"name": "Alert",
|
|
18118
|
-
"viewport": "
|
|
19985
|
+
"viewport": "700x496",
|
|
18119
19986
|
"subtitle": "In-card message — 4 tones, with and without body",
|
|
18120
19987
|
"zh": "提醒条",
|
|
18121
19988
|
"ja": "アラート",
|
|
@@ -18125,7 +19992,7 @@ window.KB_CARDS = [{
|
|
|
18125
19992
|
"path": "components/_cards/app-chrome.card.html",
|
|
18126
19993
|
"group": "Components",
|
|
18127
19994
|
"name": "App Chrome",
|
|
18128
|
-
"viewport": "
|
|
19995
|
+
"viewport": "700x1566",
|
|
18129
19996
|
"subtitle": "Sidebar tones · SidePanel · TopBar · UserMenu · PageToolbar",
|
|
18130
19997
|
"zh": "应用外壳",
|
|
18131
19998
|
"ja": "アプリの外枠",
|
|
@@ -18135,7 +20002,7 @@ window.KB_CARDS = [{
|
|
|
18135
20002
|
"path": "components/_cards/banner.card.html",
|
|
18136
20003
|
"group": "Components",
|
|
18137
20004
|
"name": "Banner",
|
|
18138
|
-
"viewport": "
|
|
20005
|
+
"viewport": "700x486",
|
|
18139
20006
|
"subtitle": "Page-level notification — 4 tones · action link · dismissible",
|
|
18140
20007
|
"zh": "横幅通知",
|
|
18141
20008
|
"ja": "バナー",
|
|
@@ -18145,7 +20012,7 @@ window.KB_CARDS = [{
|
|
|
18145
20012
|
"path": "components/_cards/breadcrumb.card.html",
|
|
18146
20013
|
"group": "Components",
|
|
18147
20014
|
"name": "Breadcrumb",
|
|
18148
|
-
"viewport": "
|
|
20015
|
+
"viewport": "700x738",
|
|
18149
20016
|
"subtitle": "Path trail — hover darkens · long trails collapse to an ellipsis dropdown",
|
|
18150
20017
|
"zh": "面包屑导航",
|
|
18151
20018
|
"ja": "パンくずリスト",
|
|
@@ -18155,7 +20022,7 @@ window.KB_CARDS = [{
|
|
|
18155
20022
|
"path": "components/_cards/button-1-base.card.html",
|
|
18156
20023
|
"group": "Components",
|
|
18157
20024
|
"name": "Button",
|
|
18158
|
-
"viewport": "
|
|
20025
|
+
"viewport": "700x1059",
|
|
18159
20026
|
"subtitle": "Solid · soft/outline · ghost · text-only · disabled · loading",
|
|
18160
20027
|
"zh": "按钮",
|
|
18161
20028
|
"ja": "ボタン",
|
|
@@ -18165,7 +20032,7 @@ window.KB_CARDS = [{
|
|
|
18165
20032
|
"path": "components/_cards/button-4-group.card.html",
|
|
18166
20033
|
"group": "Components",
|
|
18167
20034
|
"name": "Button Group",
|
|
18168
|
-
"viewport": "
|
|
20035
|
+
"viewport": "700x582",
|
|
18169
20036
|
"subtitle": "Segmented group · split button · shortcut hint · badge",
|
|
18170
20037
|
"zh": "按钮组",
|
|
18171
20038
|
"ja": "ボタングループ",
|
|
@@ -18175,7 +20042,7 @@ window.KB_CARDS = [{
|
|
|
18175
20042
|
"path": "components/_cards/button-2-states.card.html",
|
|
18176
20043
|
"group": "Components",
|
|
18177
20044
|
"name": "Button Interaction States",
|
|
18178
|
-
"viewport": "
|
|
20045
|
+
"viewport": "1120x965",
|
|
18179
20046
|
"subtitle": "Rest · hover · press · focus · loading · disabled — every variant, live and forced",
|
|
18180
20047
|
"zh": "按钮交互状态",
|
|
18181
20048
|
"ja": "ボタンのインタラクション状態",
|
|
@@ -18185,17 +20052,27 @@ window.KB_CARDS = [{
|
|
|
18185
20052
|
"path": "components/_cards/button-3-sizes-icons.card.html",
|
|
18186
20053
|
"group": "Components",
|
|
18187
20054
|
"name": "Button Sizes & Icons",
|
|
18188
|
-
"viewport": "
|
|
20055
|
+
"viewport": "700x908",
|
|
18189
20056
|
"subtitle": "sm 28 · md 32 · lg 40, Latin and CJK · icon placement · full width",
|
|
18190
20057
|
"zh": "按钮尺寸与图标",
|
|
18191
20058
|
"ja": "ボタンのサイズとアイコン",
|
|
18192
20059
|
"subtitleZh": "sm 28 · md 32 · lg 40,西文与 CJK · 图标位置 · 全宽",
|
|
18193
20060
|
"subtitleJa": "sm 28 · md 32 · lg 40、欧文と CJK · アイコン位置 · 全幅"
|
|
20061
|
+
}, {
|
|
20062
|
+
"path": "components/_cards/button-5-ai.card.html",
|
|
20063
|
+
"group": "Components",
|
|
20064
|
+
"name": "Button · AI",
|
|
20065
|
+
"viewport": "700x937",
|
|
20066
|
+
"subtitle": "variant=\"ai\" — Prophet AI entry points only · travelling gradient ring · hover speeds up",
|
|
20067
|
+
"zh": "AI 按钮",
|
|
20068
|
+
"ja": "AI ボタン",
|
|
20069
|
+
"subtitleZh": "variant=\"ai\" — 仅用于方知入口 · 流动的渐变描边 · 悬停时加速",
|
|
20070
|
+
"subtitleJa": "variant=\"ai\" — Prophet AI の入口専用 · 流れるグラデーションの枠線 · ホバーで加速"
|
|
18194
20071
|
}, {
|
|
18195
20072
|
"path": "components/_cards/canvas-zoom-controls.card.html",
|
|
18196
20073
|
"group": "Components",
|
|
18197
20074
|
"name": "Canvas Zoom Controls",
|
|
18198
|
-
"viewport": "
|
|
20075
|
+
"viewport": "700x110",
|
|
18199
20076
|
"subtitle": "Pipeline canvas − / % / + / fit-to-view",
|
|
18200
20077
|
"zh": "画布缩放控件",
|
|
18201
20078
|
"ja": "キャンバスズームコントロール",
|
|
@@ -18205,7 +20082,7 @@ window.KB_CARDS = [{
|
|
|
18205
20082
|
"path": "components/_cards/cards-indicators.card.html",
|
|
18206
20083
|
"group": "Components",
|
|
18207
20084
|
"name": "Cards & Indicators",
|
|
18208
|
-
"viewport": "
|
|
20085
|
+
"viewport": "700x528",
|
|
18209
20086
|
"subtitle": "Work in progress · Card · StatCard · Badge · IconTile · charts",
|
|
18210
20087
|
"zh": "卡片与指示器",
|
|
18211
20088
|
"ja": "カードとインジケーター",
|
|
@@ -18215,7 +20092,7 @@ window.KB_CARDS = [{
|
|
|
18215
20092
|
"path": "components/_cards/checkbox.card.html",
|
|
18216
20093
|
"group": "Components",
|
|
18217
20094
|
"name": "Checkbox",
|
|
18218
|
-
"viewport": "
|
|
20095
|
+
"viewport": "700x606",
|
|
18219
20096
|
"subtitle": "Checked · unchecked · indeterminate · disabled · sizes",
|
|
18220
20097
|
"zh": "复选框",
|
|
18221
20098
|
"ja": "チェックボックス",
|
|
@@ -18225,7 +20102,7 @@ window.KB_CARDS = [{
|
|
|
18225
20102
|
"path": "components/_cards/codeblock.card.html",
|
|
18226
20103
|
"group": "Components",
|
|
18227
20104
|
"name": "Code Block",
|
|
18228
|
-
"viewport": "
|
|
20105
|
+
"viewport": "700x286",
|
|
18229
20106
|
"subtitle": "SQL Preview / JSON export — mono with copy button",
|
|
18230
20107
|
"zh": "代码块",
|
|
18231
20108
|
"ja": "コードブロック",
|
|
@@ -18235,7 +20112,7 @@ window.KB_CARDS = [{
|
|
|
18235
20112
|
"path": "components/_cards/combobox.card.html",
|
|
18236
20113
|
"group": "Components",
|
|
18237
20114
|
"name": "Combobox",
|
|
18238
|
-
"viewport": "
|
|
20115
|
+
"viewport": "700x558",
|
|
18239
20116
|
"subtitle": "Typeahead single-select — type to filter · keyboard nav · no-results",
|
|
18240
20117
|
"zh": "输入筛选下拉",
|
|
18241
20118
|
"ja": "コンボボックス",
|
|
@@ -18245,7 +20122,7 @@ window.KB_CARDS = [{
|
|
|
18245
20122
|
"path": "components/_cards/context-menu.card.html",
|
|
18246
20123
|
"group": "Components",
|
|
18247
20124
|
"name": "Context Menu",
|
|
18248
|
-
"viewport": "
|
|
20125
|
+
"viewport": "700x1310",
|
|
18249
20126
|
"subtitle": "Icons · plain text · danger item · long list",
|
|
18250
20127
|
"zh": "右键菜单",
|
|
18251
20128
|
"ja": "右クリックメニュー",
|
|
@@ -18255,7 +20132,7 @@ window.KB_CARDS = [{
|
|
|
18255
20132
|
"path": "components/_cards/date-picker.card.html",
|
|
18256
20133
|
"group": "Components",
|
|
18257
20134
|
"name": "Date Picker",
|
|
18258
|
-
"viewport": "
|
|
20135
|
+
"viewport": "700x649",
|
|
18259
20136
|
"subtitle": "Input + month-grid popover — today outlined · selected filled",
|
|
18260
20137
|
"zh": "日期选择器",
|
|
18261
20138
|
"ja": "日付ピッカー",
|
|
@@ -18265,7 +20142,7 @@ window.KB_CARDS = [{
|
|
|
18265
20142
|
"path": "components/_cards/diffvalue.card.html",
|
|
18266
20143
|
"group": "Components",
|
|
18267
20144
|
"name": "Diff Value",
|
|
18268
|
-
"viewport": "
|
|
20145
|
+
"viewport": "700x387",
|
|
18269
20146
|
"subtitle": "Before → after change display (config migration)",
|
|
18270
20147
|
"zh": "差异值",
|
|
18271
20148
|
"ja": "差分値",
|
|
@@ -18275,7 +20152,7 @@ window.KB_CARDS = [{
|
|
|
18275
20152
|
"path": "components/_cards/divider.card.html",
|
|
18276
20153
|
"group": "Components",
|
|
18277
20154
|
"name": "Divider",
|
|
18278
|
-
"viewport": "
|
|
20155
|
+
"viewport": "700x338",
|
|
18279
20156
|
"subtitle": "Plain · labeled · vertical",
|
|
18280
20157
|
"zh": "分隔线",
|
|
18281
20158
|
"ja": "区切り線",
|
|
@@ -18285,7 +20162,7 @@ window.KB_CARDS = [{
|
|
|
18285
20162
|
"path": "components/_cards/drawer.card.html",
|
|
18286
20163
|
"group": "Components",
|
|
18287
20164
|
"name": "Drawer",
|
|
18288
|
-
"viewport": "
|
|
20165
|
+
"viewport": "700x558",
|
|
18289
20166
|
"subtitle": "Slide-out detail panel — header · scrollable body · footer actions",
|
|
18290
20167
|
"zh": "抽屉面板",
|
|
18291
20168
|
"ja": "ドロワー",
|
|
@@ -18295,7 +20172,7 @@ window.KB_CARDS = [{
|
|
|
18295
20172
|
"path": "components/_cards/dropdown-menu.card.html",
|
|
18296
20173
|
"group": "Components",
|
|
18297
20174
|
"name": "Dropdown Menu",
|
|
18298
|
-
"viewport": "
|
|
20175
|
+
"viewport": "700x1152",
|
|
18299
20176
|
"subtitle": "Button · icon-only · ghost text · avatar triggers — icon items & plain-text items",
|
|
18300
20177
|
"zh": "下拉菜单",
|
|
18301
20178
|
"ja": "ドロップダウンメニュー",
|
|
@@ -18305,7 +20182,7 @@ window.KB_CARDS = [{
|
|
|
18305
20182
|
"path": "components/_cards/dropzone.card.html",
|
|
18306
20183
|
"group": "Components",
|
|
18307
20184
|
"name": "Dropzone",
|
|
18308
|
-
"viewport": "
|
|
20185
|
+
"viewport": "924x718",
|
|
18309
20186
|
"subtitle": "Empty · drag-over · uploaded · error · disabled",
|
|
18310
20187
|
"zh": "拖放上传区",
|
|
18311
20188
|
"ja": "ドロップゾーン",
|
|
@@ -18315,7 +20192,7 @@ window.KB_CARDS = [{
|
|
|
18315
20192
|
"path": "components/_cards/empty-state.card.html",
|
|
18316
20193
|
"group": "Components",
|
|
18317
20194
|
"name": "Empty State",
|
|
18318
|
-
"viewport": "
|
|
20195
|
+
"viewport": "924x644",
|
|
18319
20196
|
"subtitle": "First-run · no results · error — with and without action",
|
|
18320
20197
|
"zh": "空状态",
|
|
18321
20198
|
"ja": "空状態",
|
|
@@ -18325,7 +20202,7 @@ window.KB_CARDS = [{
|
|
|
18325
20202
|
"path": "components/_cards/filter-bar.card.html",
|
|
18326
20203
|
"group": "Components",
|
|
18327
20204
|
"name": "Filter Bar (List Report)",
|
|
18328
|
-
"viewport": "
|
|
20205
|
+
"viewport": "1000x566",
|
|
18329
20206
|
"subtitle": "Fiori-style filter bar composed with a table — Adapt Filters · Go",
|
|
18330
20207
|
"zh": "筛选栏(列表报表)",
|
|
18331
20208
|
"ja": "フィルターバー(リストレポート)",
|
|
@@ -18335,7 +20212,7 @@ window.KB_CARDS = [{
|
|
|
18335
20212
|
"path": "components/_cards/icon-button.card.html",
|
|
18336
20213
|
"group": "Components",
|
|
18337
20214
|
"name": "Icon Button",
|
|
18338
|
-
"viewport": "
|
|
20215
|
+
"viewport": "700x498",
|
|
18339
20216
|
"subtitle": "Square ghost icon button · sm 28 · md 32 · lg 40 · active / muted / danger / loading / disabled",
|
|
18340
20217
|
"zh": "图标按钮",
|
|
18341
20218
|
"ja": "アイコンボタン",
|
|
@@ -18345,7 +20222,7 @@ window.KB_CARDS = [{
|
|
|
18345
20222
|
"path": "components/_cards/input.card.html",
|
|
18346
20223
|
"group": "Components",
|
|
18347
20224
|
"name": "Input",
|
|
18348
|
-
"viewport": "
|
|
20225
|
+
"viewport": "700x797",
|
|
18349
20226
|
"subtitle": "Default · filled · required · readOnly · disabled · error · hint · focus",
|
|
18350
20227
|
"zh": "输入框",
|
|
18351
20228
|
"ja": "入力欄",
|
|
@@ -18355,7 +20232,7 @@ window.KB_CARDS = [{
|
|
|
18355
20232
|
"path": "components/_cards/keyvalue.card.html",
|
|
18356
20233
|
"group": "Components",
|
|
18357
20234
|
"name": "Key/Value Rows",
|
|
18358
|
-
"viewport": "
|
|
20235
|
+
"viewport": "700x261",
|
|
18359
20236
|
"subtitle": "Config summary and confirmation-step rows",
|
|
18360
20237
|
"zh": "键值行",
|
|
18361
20238
|
"ja": "キー/バリュー行",
|
|
@@ -18365,7 +20242,7 @@ window.KB_CARDS = [{
|
|
|
18365
20242
|
"path": "components/_cards/kbd.card.html",
|
|
18366
20243
|
"group": "Components",
|
|
18367
20244
|
"name": "Keyboard Shortcuts",
|
|
18368
|
-
"viewport": "
|
|
20245
|
+
"viewport": "700x267",
|
|
18369
20246
|
"subtitle": "Kbd — keycap hints for a power-user tool",
|
|
18370
20247
|
"zh": "键盘快捷键",
|
|
18371
20248
|
"ja": "キーボードショートカット",
|
|
@@ -18375,7 +20252,7 @@ window.KB_CARDS = [{
|
|
|
18375
20252
|
"path": "components/_cards/listrow.card.html",
|
|
18376
20253
|
"group": "Components",
|
|
18377
20254
|
"name": "List Row",
|
|
18378
|
-
"viewport": "
|
|
20255
|
+
"viewport": "700x433",
|
|
18379
20256
|
"subtitle": "Expandable workflow rows — collapsed, expanded, with trailing count",
|
|
18380
20257
|
"zh": "列表行",
|
|
18381
20258
|
"ja": "リスト行",
|
|
@@ -18385,7 +20262,7 @@ window.KB_CARDS = [{
|
|
|
18385
20262
|
"path": "components/_cards/loading.card.html",
|
|
18386
20263
|
"group": "Components",
|
|
18387
20264
|
"name": "Loading",
|
|
18388
|
-
"viewport": "
|
|
20265
|
+
"viewport": "700x459",
|
|
18389
20266
|
"subtitle": "Spinner sizes · Skeleton text, blocks and table rows",
|
|
18390
20267
|
"zh": "加载状态",
|
|
18391
20268
|
"ja": "読み込み状態",
|
|
@@ -18395,7 +20272,7 @@ window.KB_CARDS = [{
|
|
|
18395
20272
|
"path": "components/_cards/log-viewer.card.html",
|
|
18396
20273
|
"group": "Components",
|
|
18397
20274
|
"name": "Log Viewer",
|
|
18398
|
-
"viewport": "
|
|
20275
|
+
"viewport": "700x436",
|
|
18399
20276
|
"subtitle": "Mono run log — info · warn · error lines",
|
|
18400
20277
|
"zh": "日志查看器",
|
|
18401
20278
|
"ja": "ログビューア",
|
|
@@ -18406,16 +20283,16 @@ window.KB_CARDS = [{
|
|
|
18406
20283
|
"group": "Components",
|
|
18407
20284
|
"name": "Modal",
|
|
18408
20285
|
"viewport": "700x520",
|
|
18409
|
-
"subtitle": "Default · destructive footer · with form content · no subtitle",
|
|
20286
|
+
"subtitle": "Focus · Esc · must-answer dialogs · Default · destructive footer · with form content · no subtitle",
|
|
18410
20287
|
"zh": "弹窗",
|
|
18411
20288
|
"ja": "モーダル",
|
|
18412
|
-
"subtitleZh": "默认 · 危险操作底栏 · 含表单内容 · 无副标题",
|
|
18413
|
-
"subtitleJa": "既定 · 破壊的操作のフッター · フォーム付き · 副題なし"
|
|
20289
|
+
"subtitleZh": "焦点 · Esc 关闭 · 必须回答的弹窗 · 默认 · 危险操作底栏 · 含表单内容 · 无副标题",
|
|
20290
|
+
"subtitleJa": "フォーカス · Esc で閉じる · 必ず回答するダイアログ · 既定 · 破壊的操作のフッター · フォーム付き · 副題なし"
|
|
18414
20291
|
}, {
|
|
18415
20292
|
"path": "components/_cards/multi-select.card.html",
|
|
18416
20293
|
"group": "Components",
|
|
18417
20294
|
"name": "Multi Select",
|
|
18418
|
-
"viewport": "
|
|
20295
|
+
"viewport": "700x530",
|
|
18419
20296
|
"subtitle": "Checkbox dropdown — removable tags · +n overflow · clear all",
|
|
18420
20297
|
"zh": "多选下拉",
|
|
18421
20298
|
"ja": "マルチセレクト",
|
|
@@ -18425,7 +20302,7 @@ window.KB_CARDS = [{
|
|
|
18425
20302
|
"path": "components/_cards/number-stepper.card.html",
|
|
18426
20303
|
"group": "Components",
|
|
18427
20304
|
"name": "Number Stepper",
|
|
18428
|
-
"viewport": "
|
|
20305
|
+
"viewport": "700x344",
|
|
18429
20306
|
"subtitle": "Default · at min · at max · disabled",
|
|
18430
20307
|
"zh": "数字步进器",
|
|
18431
20308
|
"ja": "数値ステッパー",
|
|
@@ -18435,7 +20312,7 @@ window.KB_CARDS = [{
|
|
|
18435
20312
|
"path": "components/_cards/pagination.card.html",
|
|
18436
20313
|
"group": "Components",
|
|
18437
20314
|
"name": "Pagination",
|
|
18438
|
-
"viewport": "
|
|
20315
|
+
"viewport": "700x758",
|
|
18439
20316
|
"subtitle": "Row-range label · small set · first/last page states",
|
|
18440
20317
|
"zh": "分页",
|
|
18441
20318
|
"ja": "ページネーション",
|
|
@@ -18445,7 +20322,7 @@ window.KB_CARDS = [{
|
|
|
18445
20322
|
"path": "components/_cards/people.card.html",
|
|
18446
20323
|
"group": "Components",
|
|
18447
20324
|
"name": "People",
|
|
18448
|
-
"viewport": "
|
|
20325
|
+
"viewport": "700x326",
|
|
18449
20326
|
"subtitle": "Avatar · AvatarGroup — initials, sizes, real images",
|
|
18450
20327
|
"zh": "人物",
|
|
18451
20328
|
"ja": "ユーザー",
|
|
@@ -18455,7 +20332,7 @@ window.KB_CARDS = [{
|
|
|
18455
20332
|
"path": "components/_cards/pipeline-node.card.html",
|
|
18456
20333
|
"group": "Components",
|
|
18457
20334
|
"name": "Pipeline Node Card",
|
|
18458
|
-
"viewport": "
|
|
20335
|
+
"viewport": "700x1781",
|
|
18459
20336
|
"subtitle": "220×90 node — category hues · status badges · ports with hover, drag-to-connect and drop states",
|
|
18460
20337
|
"zh": "流程节点卡",
|
|
18461
20338
|
"ja": "パイプラインノードカード",
|
|
@@ -18465,7 +20342,7 @@ window.KB_CARDS = [{
|
|
|
18465
20342
|
"path": "components/_cards/pipeline-palette.card.html",
|
|
18466
20343
|
"group": "Components",
|
|
18467
20344
|
"name": "Pipeline Palette",
|
|
18468
|
-
"viewport": "
|
|
20345
|
+
"viewport": "700x771",
|
|
18469
20346
|
"subtitle": "240px component drawer — grid/list toggle · collapsible hued categories",
|
|
18470
20347
|
"zh": "组件面板",
|
|
18471
20348
|
"ja": "コンポーネントパレット",
|
|
@@ -18477,7 +20354,7 @@ window.KB_CARDS = [{
|
|
|
18477
20354
|
"name": "Radio Button",
|
|
18478
20355
|
"zh": "单选按钮",
|
|
18479
20356
|
"ja": "ラジオボタン",
|
|
18480
|
-
"viewport": "
|
|
20357
|
+
"viewport": "700x1741",
|
|
18481
20358
|
"subtitle": "Single choice from a small set — md/sm · description · disabled · row · card variant · arrow-key navigation",
|
|
18482
20359
|
"subtitleZh": "小集合中的单选 — md/sm · 描述文字 · 禁用 · 横排 · 卡片式 · 方向键切换",
|
|
18483
20360
|
"subtitleJa": "少数の選択肢から1つ — md/sm · 説明文 · 無効 · 横並び · カード型 · 矢印キー操作"
|
|
@@ -18485,19 +20362,29 @@ window.KB_CARDS = [{
|
|
|
18485
20362
|
"path": "components/_cards/search.card.html",
|
|
18486
20363
|
"group": "Components",
|
|
18487
20364
|
"name": "Search Input",
|
|
18488
|
-
"viewport": "
|
|
20365
|
+
"viewport": "700x756",
|
|
18489
20366
|
"subtitle": "Bordered · bare top-bar · with value/clear · disabled",
|
|
18490
20367
|
"zh": "搜索框",
|
|
18491
20368
|
"ja": "検索欄",
|
|
18492
20369
|
"subtitleZh": "带边框 · 顶栏无边框 · 带内容/清除 · 禁用",
|
|
18493
20370
|
"subtitleJa": "ボーダー付き · トップバー用(枠なし)· 入力値/クリア付き · 無効"
|
|
20371
|
+
}, {
|
|
20372
|
+
"path": "components/_cards/search-global.card.html",
|
|
20373
|
+
"group": "Components",
|
|
20374
|
+
"name": "Search · Global",
|
|
20375
|
+
"viewport": "1000x3634",
|
|
20376
|
+
"subtitle": "GlobalSearch — TopBar search with ⌘K / Ctrl K · scopes · grouped results · Prophet AI hand-off · Deep Search",
|
|
20377
|
+
"zh": "搜索 · 全局",
|
|
20378
|
+
"ja": "検索 · グローバル",
|
|
20379
|
+
"subtitleZh": "GlobalSearch — 顶栏搜索,⌘K / Ctrl K 唤起 · 范围切换 · 分组结果 · 转交方知 · 深度搜索",
|
|
20380
|
+
"subtitleJa": "GlobalSearch — トップバー検索、⌘K / Ctrl K で起動 · スコープ切替 · グループ化された結果 · Prophet AI への引き継ぎ · ディープサーチ"
|
|
18494
20381
|
}, {
|
|
18495
20382
|
"path": "components/_cards/segmented-control.card.html",
|
|
18496
20383
|
"group": "Components",
|
|
18497
20384
|
"name": "Segmented Control",
|
|
18498
20385
|
"zh": "分段控件",
|
|
18499
20386
|
"ja": "セグメントコントロール",
|
|
18500
|
-
"viewport": "
|
|
20387
|
+
"viewport": "700x1864",
|
|
18501
20388
|
"subtitle": "Mutually exclusive views in one inset track — md/sm · counts · icons · icon-only · disabled option · full width · ViewToggle",
|
|
18502
20389
|
"subtitleZh": "同一轨道内的互斥视图切换 — md/sm · 计数 · 图标 · 纯图标 · 禁用项 · 撑满宽度 · ViewToggle",
|
|
18503
20390
|
"subtitleJa": "1つのトラック内で排他的にビューを切替 — md/sm · カウント · アイコン · アイコンのみ · 無効項目 · 全幅 · ViewToggle"
|
|
@@ -18505,7 +20392,7 @@ window.KB_CARDS = [{
|
|
|
18505
20392
|
"path": "components/_cards/select.card.html",
|
|
18506
20393
|
"group": "Components",
|
|
18507
20394
|
"name": "Select",
|
|
18508
|
-
"viewport": "
|
|
20395
|
+
"viewport": "700x513",
|
|
18509
20396
|
"subtitle": "md / sm · placeholder · disabled · error",
|
|
18510
20397
|
"zh": "下拉选择",
|
|
18511
20398
|
"ja": "セレクト",
|
|
@@ -18515,7 +20402,7 @@ window.KB_CARDS = [{
|
|
|
18515
20402
|
"path": "components/_cards/relative-time-picker.card.html",
|
|
18516
20403
|
"group": "Components",
|
|
18517
20404
|
"name": "Relative Time Picker",
|
|
18518
|
-
"viewport": "
|
|
20405
|
+
"viewport": "700x871",
|
|
18519
20406
|
"subtitle": "Filter by how long ago · md / sm / lg · unlimited · disabled · localised labels",
|
|
18520
20407
|
"zh": "相对时间选择器",
|
|
18521
20408
|
"ja": "相対時間ピッカー",
|
|
@@ -18525,7 +20412,7 @@ window.KB_CARDS = [{
|
|
|
18525
20412
|
"path": "components/_cards/slider.card.html",
|
|
18526
20413
|
"group": "Components",
|
|
18527
20414
|
"name": "Slider",
|
|
18528
|
-
"viewport": "
|
|
20415
|
+
"viewport": "700x267",
|
|
18529
20416
|
"subtitle": "Filled track · ring knob · value bubble · min/max labels",
|
|
18530
20417
|
"zh": "滑杆",
|
|
18531
20418
|
"ja": "スライダー",
|
|
@@ -18535,7 +20422,7 @@ window.KB_CARDS = [{
|
|
|
18535
20422
|
"path": "components/_cards/smart-table.card.html",
|
|
18536
20423
|
"group": "Components",
|
|
18537
20424
|
"name": "Smart Table (Database Grid)",
|
|
18538
|
-
"viewport": "
|
|
20425
|
+
"viewport": "700x1454",
|
|
18539
20426
|
"subtitle": "Frozen header and row numbers · default and compact density · typed fields · hue pills · aggregates · + New",
|
|
18540
20427
|
"zh": "智能表格(数据网格)",
|
|
18541
20428
|
"ja": "スマートテーブル(データベースグリッド)",
|
|
@@ -18545,7 +20432,7 @@ window.KB_CARDS = [{
|
|
|
18545
20432
|
"path": "components/_cards/spreadsheet.card.html",
|
|
18546
20433
|
"group": "Components",
|
|
18547
20434
|
"name": "Spreadsheet",
|
|
18548
|
-
"viewport": "
|
|
20435
|
+
"viewport": "924x590",
|
|
18549
20436
|
"subtitle": "Formula bar · frozen headers · range selection · =SUM() · sheet tabs · status bar",
|
|
18550
20437
|
"zh": "电子表格",
|
|
18551
20438
|
"ja": "スプレッドシート",
|
|
@@ -18555,7 +20442,7 @@ window.KB_CARDS = [{
|
|
|
18555
20442
|
"path": "components/_cards/stepper.card.html",
|
|
18556
20443
|
"group": "Components",
|
|
18557
20444
|
"name": "Stepper",
|
|
18558
|
-
"viewport": "
|
|
20445
|
+
"viewport": "700x618",
|
|
18559
20446
|
"subtitle": "Multi-step flow header — done · current · upcoming",
|
|
18560
20447
|
"zh": "步骤条",
|
|
18561
20448
|
"ja": "ステッパー",
|
|
@@ -18565,17 +20452,17 @@ window.KB_CARDS = [{
|
|
|
18565
20452
|
"path": "components/_cards/table.card.html",
|
|
18566
20453
|
"group": "Components",
|
|
18567
20454
|
"name": "Table",
|
|
18568
|
-
"viewport": "
|
|
18569
|
-
"subtitle": "Anatomy · densities · column types · two-line name · sorting · selection · frames · column resize · states · composition",
|
|
20455
|
+
"viewport": "700x11729",
|
|
20456
|
+
"subtitle": "Anatomy · densities · column types · two-line name · whole-row open · sorting · selection · frames · column resize · states · composition",
|
|
18570
20457
|
"zh": "表格",
|
|
18571
20458
|
"ja": "テーブル",
|
|
18572
|
-
"subtitleZh": "结构 · 密度 · 列类型 · 两行名称 · 排序 · 选择 · 边框方式 · 列宽拖拽 · 状态 · 组合用法",
|
|
18573
|
-
"subtitleJa": "構造 · 密度 · 列タイプ · 2行の名前 · 並べ替え · 選択 · フレーム · 列幅ドラッグ · 状態 · 組み合わせ"
|
|
20459
|
+
"subtitleZh": "结构 · 密度 · 列类型 · 两行名称 · 整行点击打开 · 排序 · 选择 · 边框方式 · 列宽拖拽 · 状态 · 组合用法",
|
|
20460
|
+
"subtitleJa": "構造 · 密度 · 列タイプ · 2行の名前 · 行全体クリックで開く · 並べ替え · 選択 · フレーム · 列幅ドラッグ · 状態 · 組み合わせ"
|
|
18574
20461
|
}, {
|
|
18575
20462
|
"path": "components/_cards/tabs.card.html",
|
|
18576
20463
|
"group": "Components",
|
|
18577
20464
|
"name": "Tabs",
|
|
18578
|
-
"viewport": "
|
|
20465
|
+
"viewport": "700x1118",
|
|
18579
20466
|
"subtitle": "Underline tabs · panel tabs · pill filter tabs · counts",
|
|
18580
20467
|
"zh": "标签页",
|
|
18581
20468
|
"ja": "タブ",
|
|
@@ -18585,7 +20472,7 @@ window.KB_CARDS = [{
|
|
|
18585
20472
|
"path": "components/_cards/tag.card.html",
|
|
18586
20473
|
"group": "Components",
|
|
18587
20474
|
"name": "Tag",
|
|
18588
|
-
"viewport": "
|
|
20475
|
+
"viewport": "700x438",
|
|
18589
20476
|
"subtitle": "Removable filter tags — distinct from Badge/ActionChip",
|
|
18590
20477
|
"zh": "标签",
|
|
18591
20478
|
"ja": "タグ",
|
|
@@ -18595,7 +20482,7 @@ window.KB_CARDS = [{
|
|
|
18595
20482
|
"path": "components/_cards/textarea.card.html",
|
|
18596
20483
|
"group": "Components",
|
|
18597
20484
|
"name": "Textarea",
|
|
18598
|
-
"viewport": "
|
|
20485
|
+
"viewport": "924x674",
|
|
18599
20486
|
"subtitle": "Default · character count · over the limit · disabled",
|
|
18600
20487
|
"zh": "文本域",
|
|
18601
20488
|
"ja": "テキストエリア",
|
|
@@ -18605,7 +20492,7 @@ window.KB_CARDS = [{
|
|
|
18605
20492
|
"path": "components/_cards/timeline.card.html",
|
|
18606
20493
|
"group": "Components",
|
|
18607
20494
|
"name": "Timeline",
|
|
18608
|
-
"viewport": "
|
|
20495
|
+
"viewport": "700x373",
|
|
18609
20496
|
"subtitle": "Vertical activity timeline — toned icon nodes on a hairline spine",
|
|
18610
20497
|
"zh": "时间线",
|
|
18611
20498
|
"ja": "タイムライン",
|
|
@@ -18615,17 +20502,17 @@ window.KB_CARDS = [{
|
|
|
18615
20502
|
"path": "components/_cards/toast.card.html",
|
|
18616
20503
|
"group": "Components",
|
|
18617
20504
|
"name": "Toast",
|
|
18618
|
-
"viewport": "
|
|
18619
|
-
"subtitle": "Tones · with/without meta · live ToastStack demo",
|
|
20505
|
+
"viewport": "700x1087",
|
|
20506
|
+
"subtitle": "Placement · auto-dismiss · repeat count · Tones · with/without meta · live ToastStack demo",
|
|
18620
20507
|
"zh": "轻提示",
|
|
18621
20508
|
"ja": "トースト通知",
|
|
18622
|
-
"subtitleZh": "多种色调 · 含/不含附加信息 · 实时 ToastStack 演示",
|
|
18623
|
-
"subtitleJa": "トーン違い · メタ情報の有無 · ToastStack のライブデモ"
|
|
20509
|
+
"subtitleZh": "位置 · 自动消失 · 重复计数 · 多种色调 · 含/不含附加信息 · 实时 ToastStack 演示",
|
|
20510
|
+
"subtitleJa": "表示位置 · 自動で閉じる · 繰り返し回数 · トーン違い · メタ情報の有無 · ToastStack のライブデモ"
|
|
18624
20511
|
}, {
|
|
18625
20512
|
"path": "components/_cards/toggles.card.html",
|
|
18626
20513
|
"group": "Components",
|
|
18627
20514
|
"name": "Toggle Switch",
|
|
18628
|
-
"viewport": "
|
|
20515
|
+
"viewport": "700x2771",
|
|
18629
20516
|
"subtitle": "Binary settings pill — sizes · semantic red→green · glyph knobs · inline text · captions · async loading",
|
|
18630
20517
|
"zh": "开关",
|
|
18631
20518
|
"ja": "スイッチ",
|
|
@@ -18635,7 +20522,7 @@ window.KB_CARDS = [{
|
|
|
18635
20522
|
"path": "components/_cards/tooltip.card.html",
|
|
18636
20523
|
"group": "Components",
|
|
18637
20524
|
"name": "Tooltip",
|
|
18638
|
-
"viewport": "
|
|
20525
|
+
"viewport": "700x499",
|
|
18639
20526
|
"subtitle": "Placements — top · bottom · left · right, on icon and text triggers",
|
|
18640
20527
|
"zh": "文字提示",
|
|
18641
20528
|
"ja": "ツールチップ",
|
|
@@ -18645,17 +20532,17 @@ window.KB_CARDS = [{
|
|
|
18645
20532
|
"path": "components/_cards/tree.card.html",
|
|
18646
20533
|
"group": "Components",
|
|
18647
20534
|
"name": "Tree",
|
|
18648
|
-
"viewport": "
|
|
18649
|
-
"subtitle": "Cascading checkboxes · disabled nodes · lines · async load · search · drag · reorder · keyboard",
|
|
20535
|
+
"viewport": "700x3385",
|
|
20536
|
+
"subtitle": "Size tiers · rows without an icon · Cascading checkboxes · disabled nodes · lines · async load · search · drag · reorder · keyboard",
|
|
18650
20537
|
"zh": "树形视图",
|
|
18651
20538
|
"ja": "ツリービュー",
|
|
18652
|
-
"subtitleZh": "级联勾选 · 禁用节点 · 连接线 · 异步加载 · 搜索 · 拖拽 · 排序 · 键盘操作",
|
|
18653
|
-
"subtitleJa": "カスケードチェック · 無効ノード · 接続線 · 非同期読み込み · 検索 · ドラッグ · 並べ替え · キーボード操作"
|
|
20539
|
+
"subtitleZh": "尺寸档位 · 无图标行 · 级联勾选 · 禁用节点 · 连接线 · 异步加载 · 搜索 · 拖拽 · 排序 · 键盘操作",
|
|
20540
|
+
"subtitleJa": "サイズ段階 · アイコンなしの行 · カスケードチェック · 無効ノード · 接続線 · 非同期読み込み · 検索 · ドラッグ · 並べ替え · キーボード操作"
|
|
18654
20541
|
}, {
|
|
18655
20542
|
"path": "components/_cards/icons-0-usage.card.html",
|
|
18656
20543
|
"group": "Icons",
|
|
18657
20544
|
"name": "Icon Usage",
|
|
18658
|
-
"viewport": "
|
|
20545
|
+
"viewport": "700x2221",
|
|
18659
20546
|
"subtitle": "Monochrome glyphs · category tiles · document hues · status · marks · icons inside components — when an icon gets colour",
|
|
18660
20547
|
"zh": "图标用法",
|
|
18661
20548
|
"ja": "アイコンの使い方",
|
|
@@ -18665,7 +20552,7 @@ window.KB_CARDS = [{
|
|
|
18665
20552
|
"path": "components/_cards/icons-1-core.card.html",
|
|
18666
20553
|
"group": "Icons",
|
|
18667
20554
|
"name": "Core Set",
|
|
18668
|
-
"viewport": "
|
|
20555
|
+
"viewport": "700x1764",
|
|
18669
20556
|
"subtitle": "The 157 stroke glyphs the product itself uses — keyword search · click to download the SVG",
|
|
18670
20557
|
"zh": "核心图标集",
|
|
18671
20558
|
"ja": "コアセット",
|
|
@@ -18675,7 +20562,7 @@ window.KB_CARDS = [{
|
|
|
18675
20562
|
"path": "components/_cards/icons-2-feather.card.html",
|
|
18676
20563
|
"group": "Icons",
|
|
18677
20564
|
"name": "Feather Library",
|
|
18678
|
-
"viewport": "
|
|
20565
|
+
"viewport": "700x4551",
|
|
18679
20566
|
"subtitle": "404 stroke icons (core + all of Feather) · keyword search · click to download the SVG",
|
|
18680
20567
|
"zh": "Feather 图标库",
|
|
18681
20568
|
"ja": "Featherライブラリ",
|
|
@@ -18685,7 +20572,7 @@ window.KB_CARDS = [{
|
|
|
18685
20572
|
"path": "components/_cards/icons-2b-lucide.card.html",
|
|
18686
20573
|
"group": "Icons",
|
|
18687
20574
|
"name": "Lucide Library",
|
|
18688
|
-
"viewport": "
|
|
20575
|
+
"viewport": "700x1396",
|
|
18689
20576
|
"subtitle": "Full Lucide set (1,700+ stroke glyphs, core style) via pinned CDN · keyword search · click to download the SVG",
|
|
18690
20577
|
"zh": "Lucide 图标库",
|
|
18691
20578
|
"ja": "Lucideライブラリ",
|
|
@@ -18695,7 +20582,7 @@ window.KB_CARDS = [{
|
|
|
18695
20582
|
"path": "components/_cards/icons-3-unicons.card.html",
|
|
18696
20583
|
"group": "Icons",
|
|
18697
20584
|
"name": "Unicons Library",
|
|
18698
|
-
"viewport": "
|
|
20585
|
+
"viewport": "700x1348",
|
|
18699
20586
|
"subtitle": "1,206 Unicons line glyphs via CDN webfont · keyword search · click to download the SVG",
|
|
18700
20587
|
"zh": "Unicons 图标库",
|
|
18701
20588
|
"ja": "Uniconsライブラリ",
|
|
@@ -18705,7 +20592,7 @@ window.KB_CARDS = [{
|
|
|
18705
20592
|
"path": "components/_cards/icons-4-datasource.card.html",
|
|
18706
20593
|
"group": "Icons",
|
|
18707
20594
|
"name": "Data Source Logos",
|
|
18708
|
-
"viewport": "
|
|
20595
|
+
"viewport": "700x636",
|
|
18709
20596
|
"subtitle": "17 data-source logo images in assets/logos/datasource/",
|
|
18710
20597
|
"zh": "数据源图标",
|
|
18711
20598
|
"ja": "データソースロゴ",
|
|
@@ -18715,7 +20602,7 @@ window.KB_CARDS = [{
|
|
|
18715
20602
|
"path": "guidelines/brand-logo.html",
|
|
18716
20603
|
"group": "Brand",
|
|
18717
20604
|
"name": "Logo & Wordmark",
|
|
18718
|
-
"viewport": "
|
|
20605
|
+
"viewport": "700x162",
|
|
18719
20606
|
"subtitle": "Blue cube bitmap + Inter 600 wordmark, −0.609px tracking",
|
|
18720
20607
|
"zh": "标志与字标",
|
|
18721
20608
|
"ja": "ロゴとワードマーク",
|
|
@@ -18745,7 +20632,7 @@ window.KB_CARDS = [{
|
|
|
18745
20632
|
"path": "guidelines/colors-schemes.html",
|
|
18746
20633
|
"group": "Colors",
|
|
18747
20634
|
"name": "Schemes",
|
|
18748
|
-
"viewport": "
|
|
20635
|
+
"viewport": "700x783",
|
|
18749
20636
|
"subtitle": "Sets that work together — surface, text, border, accent",
|
|
18750
20637
|
"zh": "配色方案",
|
|
18751
20638
|
"ja": "配色スキーム",
|
|
@@ -18755,7 +20642,7 @@ window.KB_CARDS = [{
|
|
|
18755
20642
|
"path": "guidelines/colors-transparency.html",
|
|
18756
20643
|
"group": "Colors",
|
|
18757
20644
|
"name": "Transparency",
|
|
18758
|
-
"viewport": "
|
|
20645
|
+
"viewport": "700x478",
|
|
18759
20646
|
"subtitle": "Alpha scale — the number is the opacity",
|
|
18760
20647
|
"zh": "透明度",
|
|
18761
20648
|
"ja": "透明度",
|
|
@@ -18765,7 +20652,7 @@ window.KB_CARDS = [{
|
|
|
18765
20652
|
"path": "guidelines/foundations-borders.html",
|
|
18766
20653
|
"group": "Foundations",
|
|
18767
20654
|
"name": "Borders & Shadows",
|
|
18768
|
-
"viewport": "
|
|
20655
|
+
"viewport": "700x176",
|
|
18769
20656
|
"subtitle": "Hairlines carry the UI; shadows only on canvas nodes",
|
|
18770
20657
|
"zh": "边框与阴影",
|
|
18771
20658
|
"ja": "ボーダーとシャドウ",
|
|
@@ -18775,7 +20662,7 @@ window.KB_CARDS = [{
|
|
|
18775
20662
|
"path": "guidelines/foundations-chrome.html",
|
|
18776
20663
|
"group": "Foundations",
|
|
18777
20664
|
"name": "App Chrome Dimensions",
|
|
18778
|
-
"viewport": "
|
|
20665
|
+
"viewport": "700x164",
|
|
18779
20666
|
"subtitle": "Fixed panel widths & bar heights",
|
|
18780
20667
|
"zh": "应用外壳尺寸",
|
|
18781
20668
|
"ja": "アプリ外枠のサイズ",
|
|
@@ -18785,7 +20672,7 @@ window.KB_CARDS = [{
|
|
|
18785
20672
|
"path": "guidelines/foundations-motion.html",
|
|
18786
20673
|
"group": "Foundations",
|
|
18787
20674
|
"name": "Motion",
|
|
18788
|
-
"viewport": "
|
|
20675
|
+
"viewport": "700x152",
|
|
18789
20676
|
"subtitle": "120/160/240ms · ease-out — hover, rise, pulse, spin",
|
|
18790
20677
|
"zh": "动效",
|
|
18791
20678
|
"ja": "モーション",
|
|
@@ -18805,7 +20692,7 @@ window.KB_CARDS = [{
|
|
|
18805
20692
|
"path": "guidelines/foundations-size-tiers.html",
|
|
18806
20693
|
"group": "Foundations",
|
|
18807
20694
|
"name": "Size Tiers",
|
|
18808
|
-
"viewport": "
|
|
20695
|
+
"viewport": "700x1335",
|
|
18809
20696
|
"subtitle": "sm 28 · md 32 · lg 40 — one tier per region, never mixed in a row; CJK one step larger at sm",
|
|
18810
20697
|
"zh": "尺寸层级",
|
|
18811
20698
|
"ja": "サイズ階層",
|
|
@@ -18815,7 +20702,7 @@ window.KB_CARDS = [{
|
|
|
18815
20702
|
"path": "guidelines/foundations-spacing.html",
|
|
18816
20703
|
"group": "Foundations",
|
|
18817
20704
|
"name": "Spacing",
|
|
18818
|
-
"viewport": "
|
|
20705
|
+
"viewport": "700x138",
|
|
18819
20706
|
"subtitle": "4px family · page 24×32 · card 21 · section gap 24 · gaps 8 inside a group, 12/16/24 between groups",
|
|
18820
20707
|
"zh": "间距",
|
|
18821
20708
|
"ja": "余白",
|
|
@@ -18825,7 +20712,7 @@ window.KB_CARDS = [{
|
|
|
18825
20712
|
"path": "guidelines/interaction-states.html",
|
|
18826
20713
|
"group": "Foundations",
|
|
18827
20714
|
"name": "Interaction States",
|
|
18828
|
-
"viewport": "
|
|
20715
|
+
"viewport": "700x552",
|
|
18829
20716
|
"subtitle": "The five states every control carries — and where each one is defined",
|
|
18830
20717
|
"zh": "交互状态",
|
|
18831
20718
|
"ja": "インタラクション状態",
|
|
@@ -18835,7 +20722,7 @@ window.KB_CARDS = [{
|
|
|
18835
20722
|
"path": "guidelines/type-extended.html",
|
|
18836
20723
|
"group": "Type",
|
|
18837
20724
|
"name": "Display Scale",
|
|
18838
|
-
"viewport": "
|
|
20725
|
+
"viewport": "700x388",
|
|
18839
20726
|
"subtitle": "Display sizes 24–60 — tracking follows the same size→tracking curve",
|
|
18840
20727
|
"zh": "展示级字号",
|
|
18841
20728
|
"ja": "ディスプレイスケール",
|
|
@@ -18845,7 +20732,7 @@ window.KB_CARDS = [{
|
|
|
18845
20732
|
"path": "guidelines/type-mono.html",
|
|
18846
20733
|
"group": "Type",
|
|
18847
20734
|
"name": "Mono / Code Only",
|
|
18848
|
-
"viewport": "
|
|
20735
|
+
"viewport": "700x187",
|
|
18849
20736
|
"subtitle": "Menlo for code blocks, logs, inline code and config-code chips — IDs and amounts stay in Inter with tabular figures",
|
|
18850
20737
|
"zh": "等宽字体 / 仅用于代码",
|
|
18851
20738
|
"ja": "等幅フォント/コード専用",
|
|
@@ -18855,7 +20742,7 @@ window.KB_CARDS = [{
|
|
|
18855
20742
|
"path": "guidelines/type-scale.html",
|
|
18856
20743
|
"group": "Type",
|
|
18857
20744
|
"name": "Type Scale",
|
|
18858
|
-
"viewport": "
|
|
20745
|
+
"viewport": "700x408",
|
|
18859
20746
|
"subtitle": "Inter — the 14px scale: 12 captions · 14 body and controls · 16 section titles · 20 page titles; CJK one step larger below 14",
|
|
18860
20747
|
"zh": "字号阶梯",
|
|
18861
20748
|
"ja": "フォントサイズ体系",
|
|
@@ -18865,7 +20752,7 @@ window.KB_CARDS = [{
|
|
|
18865
20752
|
"path": "guidelines/type-weights.html",
|
|
18866
20753
|
"group": "Type",
|
|
18867
20754
|
"name": "Inter Weights",
|
|
18868
|
-
"viewport": "
|
|
20755
|
+
"viewport": "700x264",
|
|
18869
20756
|
"subtitle": "300 numerals · 400 body · 500 UI-medium · 600 titles — 500 becomes 600 in Chinese, Japanese and Korean",
|
|
18870
20757
|
"zh": "Inter 字重",
|
|
18871
20758
|
"ja": "Inter のウェイト",
|
|
@@ -18875,7 +20762,7 @@ window.KB_CARDS = [{
|
|
|
18875
20762
|
"path": "components/_cards/charts-1-sparkline.card.html",
|
|
18876
20763
|
"group": "Charts",
|
|
18877
20764
|
"name": "Sparkline",
|
|
18878
|
-
"viewport": "
|
|
20765
|
+
"viewport": "700x945",
|
|
18879
20766
|
"subtitle": "Micro trends for stat tiles, table cells, list rows — line · area · bars · curve",
|
|
18880
20767
|
"zh": "迷你趋势图",
|
|
18881
20768
|
"ja": "スパークライン",
|
|
@@ -18885,7 +20772,7 @@ window.KB_CARDS = [{
|
|
|
18885
20772
|
"path": "components/_cards/charts-2-line.card.html",
|
|
18886
20773
|
"group": "Charts",
|
|
18887
20774
|
"name": "Line & Area",
|
|
18888
|
-
"viewport": "
|
|
20775
|
+
"viewport": "700x1538",
|
|
18889
20776
|
"subtitle": "Trends over time — straight, smooth or stepped · stacked area · hover + legend mute",
|
|
18890
20777
|
"zh": "折线与面积图",
|
|
18891
20778
|
"ja": "ライン & エリア",
|
|
@@ -18895,7 +20782,7 @@ window.KB_CARDS = [{
|
|
|
18895
20782
|
"path": "components/_cards/charts-3-bar.card.html",
|
|
18896
20783
|
"group": "Charts",
|
|
18897
20784
|
"name": "Bar Chart",
|
|
18898
|
-
"viewport": "
|
|
20785
|
+
"viewport": "700x2203",
|
|
18899
20786
|
"subtitle": "Vertical & horizontal — grouped · stacked · 100% stacked · diverging · combo line",
|
|
18900
20787
|
"zh": "柱状图",
|
|
18901
20788
|
"ja": "バーチャート",
|
|
@@ -18905,7 +20792,7 @@ window.KB_CARDS = [{
|
|
|
18905
20792
|
"path": "components/_cards/charts-4-barlist.card.html",
|
|
18906
20793
|
"group": "Charts",
|
|
18907
20794
|
"name": "Bar List",
|
|
18908
|
-
"viewport": "
|
|
20795
|
+
"viewport": "700x545",
|
|
18909
20796
|
"subtitle": "Horizontal labeled bars — top-N rankings, budget consumption",
|
|
18910
20797
|
"zh": "横向条形列表",
|
|
18911
20798
|
"ja": "バーリスト",
|
|
@@ -18915,7 +20802,7 @@ window.KB_CARDS = [{
|
|
|
18915
20802
|
"path": "components/_cards/charts-5-donut.card.html",
|
|
18916
20803
|
"group": "Charts",
|
|
18917
20804
|
"name": "Donut & Pie",
|
|
18918
|
-
"viewport": "
|
|
20805
|
+
"viewport": "700x583",
|
|
18919
20806
|
"subtitle": "Composition with a KPI center — hover lifts a segment",
|
|
18920
20807
|
"zh": "环形与饼图",
|
|
18921
20808
|
"ja": "ドーナツ & パイ",
|
|
@@ -18925,7 +20812,7 @@ window.KB_CARDS = [{
|
|
|
18925
20812
|
"path": "components/_cards/charts-6-scatter.card.html",
|
|
18926
20813
|
"group": "Charts",
|
|
18927
20814
|
"name": "Scatter & Bubble",
|
|
18928
|
-
"viewport": "
|
|
20815
|
+
"viewport": "700x496",
|
|
18929
20816
|
"subtitle": "x/y correlation, bubble = third dimension — nearest-point tooltip",
|
|
18930
20817
|
"zh": "散点气泡图",
|
|
18931
20818
|
"ja": "散布図 & バブル",
|
|
@@ -18935,7 +20822,7 @@ window.KB_CARDS = [{
|
|
|
18935
20822
|
"path": "components/_cards/charts-7-heatmap.card.html",
|
|
18936
20823
|
"group": "Charts",
|
|
18937
20824
|
"name": "Heatmap",
|
|
18938
|
-
"viewport": "
|
|
20825
|
+
"viewport": "700x537",
|
|
18939
20826
|
"subtitle": "Matrix density — sequential blue ramp · diverging red/green variance",
|
|
18940
20827
|
"zh": "热力图",
|
|
18941
20828
|
"ja": "ヒートマップ",
|
|
@@ -18945,7 +20832,7 @@ window.KB_CARDS = [{
|
|
|
18945
20832
|
"path": "components/_cards/charts-8-waterfall.card.html",
|
|
18946
20833
|
"group": "Charts",
|
|
18947
20834
|
"name": "Waterfall",
|
|
18948
|
-
"viewport": "
|
|
20835
|
+
"viewport": "700x483",
|
|
18949
20836
|
"subtitle": "Finance bridge — signed deltas, re-baselining totals, running-sum connectors",
|
|
18950
20837
|
"zh": "瀑布图",
|
|
18951
20838
|
"ja": "ウォーターフォール",
|
|
@@ -18955,7 +20842,7 @@ window.KB_CARDS = [{
|
|
|
18955
20842
|
"path": "components/_cards/charts-9-bullet.card.html",
|
|
18956
20843
|
"group": "Charts",
|
|
18957
20844
|
"name": "Bullet",
|
|
18958
|
-
"viewport": "
|
|
20845
|
+
"viewport": "700x500",
|
|
18959
20846
|
"subtitle": "Actual vs. target rows with a target tick — misses in red",
|
|
18960
20847
|
"zh": "子弹图",
|
|
18961
20848
|
"ja": "ブレットチャート",
|
|
@@ -18965,7 +20852,7 @@ window.KB_CARDS = [{
|
|
|
18965
20852
|
"path": "components/_cards/charts-10-gauge.card.html",
|
|
18966
20853
|
"group": "Charts",
|
|
18967
20854
|
"name": "Gauge",
|
|
18968
|
-
"viewport": "
|
|
20855
|
+
"viewport": "700x320",
|
|
18969
20856
|
"subtitle": "Semi-circular KPI — flat arc, threshold bands, no needle",
|
|
18970
20857
|
"zh": "仪表盘",
|
|
18971
20858
|
"ja": "ゲージ",
|
|
@@ -18975,7 +20862,7 @@ window.KB_CARDS = [{
|
|
|
18975
20862
|
"path": "components/_cards/charts-11-funnel.card.html",
|
|
18976
20863
|
"group": "Charts",
|
|
18977
20864
|
"name": "Funnel",
|
|
18978
|
-
"viewport": "
|
|
20865
|
+
"viewport": "700x631",
|
|
18979
20866
|
"subtitle": "Stage counts with step-to-step conversion — sub-50% steps flagged",
|
|
18980
20867
|
"zh": "漏斗图",
|
|
18981
20868
|
"ja": "ファネル",
|
|
@@ -18985,7 +20872,7 @@ window.KB_CARDS = [{
|
|
|
18985
20872
|
"path": "components/_cards/charts-12-treemap.card.html",
|
|
18986
20873
|
"group": "Charts",
|
|
18987
20874
|
"name": "Treemap",
|
|
18988
|
-
"viewport": "
|
|
20875
|
+
"viewport": "700x463",
|
|
18989
20876
|
"subtitle": "Squarified composition — readable at 15+ items, hover for share",
|
|
18990
20877
|
"zh": "矩形树图",
|
|
18991
20878
|
"ja": "ツリーマップ",
|
|
@@ -18995,7 +20882,7 @@ window.KB_CARDS = [{
|
|
|
18995
20882
|
"path": "components/_cards/charts-14-radar.card.html",
|
|
18996
20883
|
"group": "Charts",
|
|
18997
20884
|
"name": "Radar",
|
|
18998
|
-
"viewport": "
|
|
20885
|
+
"viewport": "700x514",
|
|
18999
20886
|
"subtitle": "Spider chart — a few entities across the same 3–10 measures",
|
|
19000
20887
|
"zh": "雷达图",
|
|
19001
20888
|
"ja": "レーダーチャート",
|
|
@@ -19005,7 +20892,7 @@ window.KB_CARDS = [{
|
|
|
19005
20892
|
"path": "components/_cards/charts-15-distribution.card.html",
|
|
19006
20893
|
"group": "Charts",
|
|
19007
20894
|
"name": "Histogram & Box Plot",
|
|
19008
|
-
"viewport": "
|
|
20895
|
+
"viewport": "700x809",
|
|
19009
20896
|
"subtitle": "Distribution of one measure · spread and outliers per group",
|
|
19010
20897
|
"zh": "直方图与箱线图",
|
|
19011
20898
|
"ja": "ヒストグラム & 箱ひげ図",
|
|
@@ -19015,7 +20902,7 @@ window.KB_CARDS = [{
|
|
|
19015
20902
|
"path": "components/_cards/charts-16-pareto.card.html",
|
|
19016
20903
|
"group": "Charts",
|
|
19017
20904
|
"name": "Pareto",
|
|
19018
|
-
"viewport": "
|
|
20905
|
+
"viewport": "700x473",
|
|
19019
20906
|
"subtitle": "Sorted bars + cumulative % line — the vital few vs. the trivial many",
|
|
19020
20907
|
"zh": "帕累托图",
|
|
19021
20908
|
"ja": "パレート図",
|
|
@@ -19025,7 +20912,7 @@ window.KB_CARDS = [{
|
|
|
19025
20912
|
"path": "components/_cards/charts-17-candlestick.card.html",
|
|
19026
20913
|
"group": "Charts",
|
|
19027
20914
|
"name": "Candlestick",
|
|
19028
|
-
"viewport": "
|
|
20915
|
+
"viewport": "700x789",
|
|
19029
20916
|
"subtitle": "OHLC K-line — volume band, moving average, hollow-body convention",
|
|
19030
20917
|
"zh": "K 线图",
|
|
19031
20918
|
"ja": "ローソク足",
|
|
@@ -19035,7 +20922,7 @@ window.KB_CARDS = [{
|
|
|
19035
20922
|
"path": "components/_cards/charts-18-sankey.card.html",
|
|
19036
20923
|
"group": "Charts",
|
|
19037
20924
|
"name": "Sankey",
|
|
19038
|
-
"viewport": "
|
|
20925
|
+
"viewport": "700x561",
|
|
19039
20926
|
"subtitle": "Flow diagram — columns derived from the graph, never positioned by hand",
|
|
19040
20927
|
"zh": "桑基图",
|
|
19041
20928
|
"ja": "サンキー図",
|
|
@@ -19045,7 +20932,7 @@ window.KB_CARDS = [{
|
|
|
19045
20932
|
"path": "components/_cards/charts-19-chord.card.html",
|
|
19046
20933
|
"group": "Charts",
|
|
19047
20934
|
"name": "Chord",
|
|
19048
|
-
"viewport": "
|
|
20935
|
+
"viewport": "700x924",
|
|
19049
20936
|
"subtitle": "Circular Sankey — many-to-many, cyclical flows on one ring",
|
|
19050
20937
|
"zh": "和弦图",
|
|
19051
20938
|
"ja": "コード図",
|
|
@@ -19055,7 +20942,7 @@ window.KB_CARDS = [{
|
|
|
19055
20942
|
"path": "components/_cards/charts-20-sunburst.card.html",
|
|
19056
20943
|
"group": "Charts",
|
|
19057
20944
|
"name": "Sunburst",
|
|
19058
|
-
"viewport": "
|
|
20945
|
+
"viewport": "700x551",
|
|
19059
20946
|
"subtitle": "Hierarchy as concentric rings — click a ring to zoom, center to go back",
|
|
19060
20947
|
"zh": "旭日图",
|
|
19061
20948
|
"ja": "サンバースト",
|
|
@@ -19065,7 +20952,7 @@ window.KB_CARDS = [{
|
|
|
19065
20952
|
"path": "components/_cards/charts-21-worldmap.card.html",
|
|
19066
20953
|
"group": "Charts",
|
|
19067
20954
|
"name": "World Map",
|
|
19068
|
-
"viewport": "
|
|
20955
|
+
"viewport": "700x924",
|
|
19069
20956
|
"subtitle": "Choropleth on real Natural Earth geometry — hover, select, diverging scale",
|
|
19070
20957
|
"zh": "世界地图",
|
|
19071
20958
|
"ja": "世界地図",
|
|
@@ -19075,7 +20962,7 @@ window.KB_CARDS = [{
|
|
|
19075
20962
|
"path": "components/_cards/charts-22-gantt.card.html",
|
|
19076
20963
|
"group": "Charts",
|
|
19077
20964
|
"name": "Gantt",
|
|
19078
|
-
"viewport": "
|
|
20965
|
+
"viewport": "700x648",
|
|
19079
20966
|
"subtitle": "Timeline of tasks — weekend tinting, progress fill, today marker, milestones",
|
|
19080
20967
|
"zh": "甘特图",
|
|
19081
20968
|
"ja": "ガントチャート",
|
|
@@ -19085,7 +20972,7 @@ window.KB_CARDS = [{
|
|
|
19085
20972
|
"path": "components/_cards/charts-23-bar3d.card.html",
|
|
19086
20973
|
"group": "Charts",
|
|
19087
20974
|
"name": "3D Bars",
|
|
19088
|
-
"viewport": "
|
|
20975
|
+
"viewport": "700x802",
|
|
19089
20976
|
"subtitle": "Cuboid bars, grouped depth rows or stacked — drag to orbit, hover to read",
|
|
19090
20977
|
"zh": "立体柱状图",
|
|
19091
20978
|
"ja": "3Dバー",
|
|
@@ -19095,7 +20982,7 @@ window.KB_CARDS = [{
|
|
|
19095
20982
|
"path": "components/_cards/charts-24-pie3d.card.html",
|
|
19096
20983
|
"group": "Charts",
|
|
19097
20984
|
"name": "3D Pie & Donut",
|
|
19098
|
-
"viewport": "
|
|
20985
|
+
"viewport": "700x1336",
|
|
19099
20986
|
"subtitle": "Extruded and stepped-stairs slices — drag spins in place, hover lifts a slice",
|
|
19100
20987
|
"zh": "立体饼图与环形",
|
|
19101
20988
|
"ja": "3Dパイ & ドーナツ",
|
|
@@ -19105,7 +20992,7 @@ window.KB_CARDS = [{
|
|
|
19105
20992
|
"path": "components/_cards/charts-25-surface3d.card.html",
|
|
19106
20993
|
"group": "Charts",
|
|
19107
20994
|
"name": "3D Surface",
|
|
19108
|
-
"viewport": "
|
|
20995
|
+
"viewport": "700x493",
|
|
19109
20996
|
"subtitle": "z = f(x,y) heat-shaded grid — drag to orbit, hover reads a cell",
|
|
19110
20997
|
"zh": "立体曲面图",
|
|
19111
20998
|
"ja": "3Dサーフェス",
|
|
@@ -19115,7 +21002,7 @@ window.KB_CARDS = [{
|
|
|
19115
21002
|
"path": "components/_cards/charts-26-scatter3d.card.html",
|
|
19116
21003
|
"group": "Charts",
|
|
19117
21004
|
"name": "3D Scatter",
|
|
19118
|
-
"viewport": "
|
|
21005
|
+
"viewport": "700x534",
|
|
19119
21006
|
"subtitle": "Points in an orientation cube — drag to orbit, hover pins x·y·z",
|
|
19120
21007
|
"zh": "立体散点图",
|
|
19121
21008
|
"ja": "3D散布図",
|
|
@@ -19125,7 +21012,7 @@ window.KB_CARDS = [{
|
|
|
19125
21012
|
"path": "components/_cards/charts-27-ribbon3d.card.html",
|
|
19126
21013
|
"group": "Charts",
|
|
19127
21014
|
"name": "3D Ribbon",
|
|
19128
|
-
"viewport": "
|
|
21015
|
+
"viewport": "700x524",
|
|
19129
21016
|
"subtitle": "Series as extruded depth bands — the classic 3D area · drag to orbit",
|
|
19130
21017
|
"zh": "立体层带图",
|
|
19131
21018
|
"ja": "3Dリボン",
|
|
@@ -19135,7 +21022,7 @@ window.KB_CARDS = [{
|
|
|
19135
21022
|
"path": "components/_cards/charts-99-fullpage.card.html",
|
|
19136
21023
|
"group": "Charts",
|
|
19137
21024
|
"name": "Full-Page Analytics",
|
|
19138
|
-
"viewport": "
|
|
21025
|
+
"viewport": "1512x2200",
|
|
19139
21026
|
"subtitle": "Reference layout only — every chart type composed into one screen",
|
|
19140
21027
|
"zh": "全屏分析页",
|
|
19141
21028
|
"ja": "フルページ分析",
|
|
@@ -19179,6 +21066,17 @@ const cssVar = {
|
|
|
19179
21066
|
actionPrimary: "var(--action-primary)",
|
|
19180
21067
|
actionPrimaryActive: "var(--action-primary-active)",
|
|
19181
21068
|
actionPrimaryHover: "var(--action-primary-hover)",
|
|
21069
|
+
aiGlowBlur: "var(--ai-glow-blur)",
|
|
21070
|
+
aiGlowOpacity: "var(--ai-glow-opacity)",
|
|
21071
|
+
aiGradientEnd: "var(--ai-gradient-end)",
|
|
21072
|
+
aiGradientStart: "var(--ai-gradient-start)",
|
|
21073
|
+
aiGradientStops: "var(--ai-gradient-stops)",
|
|
21074
|
+
aiRingRestTrack: "var(--ai-ring-rest-track)",
|
|
21075
|
+
aiRingWidth: "var(--ai-ring-width)",
|
|
21076
|
+
aiSpinHover: "var(--ai-spin-hover)",
|
|
21077
|
+
aiSpinRest: "var(--ai-spin-rest)",
|
|
21078
|
+
aiTint: "var(--ai-tint)",
|
|
21079
|
+
aiTintPress: "var(--ai-tint-press)",
|
|
19182
21080
|
amber100: "var(--amber-100)",
|
|
19183
21081
|
amber200: "var(--amber-200)",
|
|
19184
21082
|
amber300: "var(--amber-300)",
|
|
@@ -19449,10 +21347,13 @@ const cssVar = {
|
|
|
19449
21347
|
series7: "var(--series-7)",
|
|
19450
21348
|
series8: "var(--series-8)",
|
|
19451
21349
|
series9: "var(--series-9)",
|
|
21350
|
+
shadowDrawer: "var(--shadow-drawer)",
|
|
19452
21351
|
shadowMenu: "var(--shadow-menu)",
|
|
19453
21352
|
shadowModal: "var(--shadow-modal)",
|
|
19454
21353
|
shadowNode: "var(--shadow-node)",
|
|
21354
|
+
shadowRaised: "var(--shadow-raised)",
|
|
19455
21355
|
shadowSelected: "var(--shadow-selected)",
|
|
21356
|
+
shadowThumb: "var(--shadow-thumb)",
|
|
19456
21357
|
sidebarW: "var(--sidebar-w)",
|
|
19457
21358
|
skeleton: "var(--skeleton)",
|
|
19458
21359
|
softActive: "var(--soft-active)",
|
|
@@ -19545,6 +21446,17 @@ const light = {
|
|
|
19545
21446
|
actionPrimary: "#155dfc",
|
|
19546
21447
|
actionPrimaryActive: "#1039c4",
|
|
19547
21448
|
actionPrimaryHover: "#1447e6",
|
|
21449
|
+
aiGlowBlur: "6px",
|
|
21450
|
+
aiGlowOpacity: ".4",
|
|
21451
|
+
aiGradientEnd: "#e355b2",
|
|
21452
|
+
aiGradientStart: "#2b7fff",
|
|
21453
|
+
aiGradientStops: "#2b7fff,#e355b2,#2b7fff",
|
|
21454
|
+
aiRingRestTrack: "#e5e5e5",
|
|
21455
|
+
aiRingWidth: "1px",
|
|
21456
|
+
aiSpinHover: "1.2s",
|
|
21457
|
+
aiSpinRest: "5s",
|
|
21458
|
+
aiTint: "8%",
|
|
21459
|
+
aiTintPress: "14%",
|
|
19548
21460
|
amber100: "#ffefd3",
|
|
19549
21461
|
amber200: "#ffe5b7",
|
|
19550
21462
|
amber300: "#ffd280",
|
|
@@ -19815,10 +21727,13 @@ const light = {
|
|
|
19815
21727
|
series7: "#7a8d30",
|
|
19816
21728
|
series8: "#2f99c0",
|
|
19817
21729
|
series9: "#737373",
|
|
21730
|
+
shadowDrawer: "-8px 0 24px rgba(0,0,0,.12)",
|
|
19818
21731
|
shadowMenu: "0 4px 12px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.08)",
|
|
19819
21732
|
shadowModal: "0 24px 64px rgba(0,0,0,.18),0 2px 8px rgba(0,0,0,.08)",
|
|
19820
21733
|
shadowNode: "0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1)",
|
|
21734
|
+
shadowRaised: "0 1px 2px rgba(0,0,0,.08)",
|
|
19821
21735
|
shadowSelected: "0 0 0 2px #dbeafe,0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1)",
|
|
21736
|
+
shadowThumb: "0 1px 2px rgba(0,0,0,.15)",
|
|
19822
21737
|
sidebarW: "240px",
|
|
19823
21738
|
skeleton: "#e5e5e5",
|
|
19824
21739
|
softActive: "#bedbff",
|
|
@@ -19829,8 +21744,8 @@ const light = {
|
|
|
19829
21744
|
successBg: "#ecfdf5",
|
|
19830
21745
|
successStrong: "#009966",
|
|
19831
21746
|
successText: "#007a55",
|
|
19832
|
-
switchH: "
|
|
19833
|
-
switchW: "
|
|
21747
|
+
switchH: "18px",
|
|
21748
|
+
switchW: "32px",
|
|
19834
21749
|
tHover: "background 120ms cubic-bezier(.2,.8,.3,1),border-color 120ms cubic-bezier(.2,.8,.3,1),color 120ms cubic-bezier(.2,.8,.3,1)",
|
|
19835
21750
|
tTheme: "background-color 160ms cubic-bezier(.2,.8,.3,1),color 160ms cubic-bezier(.2,.8,.3,1),border-color 160ms cubic-bezier(.2,.8,.3,1)",
|
|
19836
21751
|
tagH: "24px",
|
|
@@ -19911,6 +21826,17 @@ const dark = {
|
|
|
19911
21826
|
actionPrimary: "#1f6feb",
|
|
19912
21827
|
actionPrimaryActive: "#1a5ec9",
|
|
19913
21828
|
actionPrimaryHover: "#2b7fff",
|
|
21829
|
+
aiGlowBlur: "6px",
|
|
21830
|
+
aiGlowOpacity: ".3",
|
|
21831
|
+
aiGradientEnd: "#e355b2",
|
|
21832
|
+
aiGradientStart: "#2b7fff",
|
|
21833
|
+
aiGradientStops: "#2b7fff,#e355b2,#2b7fff",
|
|
21834
|
+
aiRingRestTrack: "#333333",
|
|
21835
|
+
aiRingWidth: "1px",
|
|
21836
|
+
aiSpinHover: "1.2s",
|
|
21837
|
+
aiSpinRest: "5s",
|
|
21838
|
+
aiTint: "8%",
|
|
21839
|
+
aiTintPress: "14%",
|
|
19914
21840
|
amber100: "#ffefd3",
|
|
19915
21841
|
amber200: "#ffe5b7",
|
|
19916
21842
|
amber300: "#ffd280",
|
|
@@ -20181,10 +22107,13 @@ const dark = {
|
|
|
20181
22107
|
series7: "#9bb054",
|
|
20182
22108
|
series8: "#54b8e1",
|
|
20183
22109
|
series9: "#8f8f8f",
|
|
22110
|
+
shadowDrawer: "-8px 0 24px rgba(0,0,0,.5)",
|
|
20184
22111
|
shadowMenu: "0 4px 16px rgba(0,0,0,.55),0 1px 3px rgba(0,0,0,.4)",
|
|
20185
22112
|
shadowModal: "0 24px 64px rgba(0,0,0,.7),0 2px 8px rgba(0,0,0,.5)",
|
|
20186
22113
|
shadowNode: "0 1px 3px 0 rgba(0,0,0,.6),0 1px 2px -1px rgba(0,0,0,.5)",
|
|
22114
|
+
shadowRaised: "0 1px 2px rgba(0,0,0,.4)",
|
|
20187
22115
|
shadowSelected: "0 0 0 2px rgba(43,127,255,.32),0 1px 3px 0 rgba(0,0,0,.6)",
|
|
22116
|
+
shadowThumb: "0 1px 2px rgba(0,0,0,.5)",
|
|
20188
22117
|
sidebarW: "240px",
|
|
20189
22118
|
skeleton: "#242424",
|
|
20190
22119
|
softActive: "rgba(43,127,255,.32)",
|
|
@@ -20195,8 +22124,8 @@ const dark = {
|
|
|
20195
22124
|
successBg: "rgba(0,188,125,.14)",
|
|
20196
22125
|
successStrong: "#22c58f",
|
|
20197
22126
|
successText: "#4ade9f",
|
|
20198
|
-
switchH: "
|
|
20199
|
-
switchW: "
|
|
22127
|
+
switchH: "18px",
|
|
22128
|
+
switchW: "32px",
|
|
20200
22129
|
tHover: "background 120ms cubic-bezier(.2,.8,.3,1),border-color 120ms cubic-bezier(.2,.8,.3,1),color 120ms cubic-bezier(.2,.8,.3,1)",
|
|
20201
22130
|
tTheme: "background-color 160ms cubic-bezier(.2,.8,.3,1),color 160ms cubic-bezier(.2,.8,.3,1),border-color 160ms cubic-bezier(.2,.8,.3,1)",
|
|
20202
22131
|
tagH: "24px",
|
|
@@ -20269,7 +22198,7 @@ const dark = {
|
|
|
20269
22198
|
zToast: "80",
|
|
20270
22199
|
zTooltip: "100"
|
|
20271
22200
|
};
|
|
20272
|
-
const tokenNames = ["--action-dark", "--action-dark-active", "--action-dark-fg", "--action-dark-hover", "--action-primary", "--action-primary-active", "--action-primary-hover", "--amber-100", "--amber-200", "--amber-300", "--amber-400", "--amber-50", "--amber-500", "--amber-600", "--amber-700", "--amber-800", "--amber-900", "--amber-950", "--bar-card-h", "--bar-h", "--bg-active", "--bg-app", "--bg-hover", "--bg-inset", "--bg-press", "--bg-raised", "--bg-scrim", "--bg-surface", "--bg-table-header", "--blue-100", "--blue-200", "--blue-300", "--blue-400", "--blue-50", "--blue-500", "--blue-600", "--blue-700", "--blue-800", "--blue-900", "--blue-950", "--border-card", "--border-control", "--border-split", "--border-strong", "--border-subtle", "--brand-alpha-12", "--brand-alpha-16", "--brand-alpha-24", "--brand-alpha-32", "--brand-alpha-8", "--card-pad", "--card-pad-sm", "--cat-join", "--cat-join-bg", "--cat-merge", "--cat-merge-bg", "--cat-output", "--cat-output-bg", "--cat-source", "--cat-source-bg", "--cat-transform", "--cat-transform-bg", "--cell-px", "--chart-area-alpha", "--chart-axis", "--chart-blue", "--chart-grid", "--chart-guide", "--chart-heat-1", "--chart-heat-2", "--chart-heat-3", "--chart-heat-4", "--chart-heat-5", "--chart-heat-ink", "--chart-label", "--chart-neg", "--chart-pos", "--chart-total", "--chart-track", "--check-size", "--checkbox-border", "--control-gap", "--control-h", "--control-icon", "--control-leading", "--control-px", "--control-text", "--control-tracking", "--count-h", "--cyan-100", "--cyan-200", "--cyan-300", "--cyan-400", "--cyan-50", "--cyan-500", "--cyan-600", "--cyan-700", "--cyan-800", "--cyan-900", "--cyan-950", "--danger", "--danger-active", "--danger-bg", "--danger-soft-active", "--danger-soft-hover", "--danger-text", "--dot-neutral", "--drawer-h", "--dropzone-border", "--dropzone-border-hover", "--dur", "--dur-fast", "--dur-instant", "--dur-slow", "--dur-slower", "--ease-in", "--ease-in-out", "--ease-out", "--edge", "--edge-pad", "--emerald-100", "--emerald-200", "--emerald-300", "--emerald-400", "--emerald-50", "--emerald-500", "--emerald-600", "--emerald-700", "--emerald-800", "--emerald-900", "--emerald-950", "--focus-border", "--focus-ring", "--font-mono", "--font-sans", "--group-gap", "--h-button", "--h-button-sm", "--h-input", "--h-nav-item", "--h-subnav-item", "--h-tree-item", "--hue-amber-bg", "--hue-amber-fg", "--hue-blue-bg", "--hue-blue-fg", "--hue-cyan-bg", "--hue-cyan-fg", "--hue-gray-bg", "--hue-gray-fg", "--hue-green-bg", "--hue-green-fg", "--hue-orange-bg", "--hue-orange-fg", "--hue-pink-bg", "--hue-pink-fg", "--hue-purple-bg", "--hue-purple-fg", "--hue-red-bg", "--hue-red-fg", "--hue-teal-bg", "--hue-teal-fg", "--info-bg", "--info-fg", "--leading-2xl", "--leading-2xs", "--leading-3xl", "--leading-4xl", "--leading-base", "--leading-code", "--leading-display", "--leading-lg", "--leading-md", "--leading-num", "--leading-sm", "--leading-xl", "--leading-xs", "--link", "--link-hover", "--neutral-0", "--neutral-100", "--neutral-200", "--neutral-300", "--neutral-400", "--neutral-50", "--neutral-500", "--neutral-600", "--neutral-700", "--neutral-800", "--neutral-900", "--neutral-950", "--neutral-alpha-12", "--neutral-alpha-16", "--neutral-alpha-2", "--neutral-alpha-24", "--neutral-alpha-32", "--neutral-alpha-4", "--neutral-alpha-48", "--neutral-alpha-64", "--neutral-alpha-8", "--neutral-alpha-80", "--on-accent", "--orange-100", "--orange-200", "--orange-300", "--orange-400", "--orange-50", "--orange-500", "--orange-600", "--orange-700", "--orange-800", "--orange-900", "--orange-950", "--overlay-drag", "--overlay-hover", "--overlay-press", "--overlay-selected", "--page-pad-x", "--page-pad-y", "--panel-w", "--pink-100", "--pink-200", "--pink-300", "--pink-400", "--pink-50", "--pink-500", "--pink-600", "--pink-700", "--pink-800", "--pink-900", "--pink-950", "--port-border", "--press-filter", "--press-filter-strong", "--purple-100", "--purple-200", "--purple-300", "--purple-400", "--purple-50", "--purple-500", "--purple-600", "--purple-700", "--purple-800", "--purple-900", "--purple-950", "--radius-full", "--radius-lg", "--radius-md", "--radius-node", "--radius-sm", "--radius-tile", "--rail-w", "--red-100", "--red-200", "--red-300", "--red-400", "--red-50", "--red-500", "--red-600", "--red-700", "--red-800", "--red-900", "--red-950", "--ring-focus", "--ring-surface", "--section-gap", "--selected-border", "--series-1", "--series-10", "--series-2", "--series-3", "--series-4", "--series-5", "--series-6", "--series-7", "--series-8", "--series-9", "--shadow-menu", "--shadow-modal", "--shadow-node", "--shadow-selected", "--sidebar-w", "--skeleton", "--soft-active", "--soft-bg", "--soft-border", "--soft-hover", "--success", "--success-bg", "--success-strong", "--success-text", "--switch-h", "--switch-w", "--t-hover", "--t-theme", "--tag-h", "--teal-100", "--teal-200", "--teal-300", "--teal-400", "--teal-50", "--teal-500", "--teal-600", "--teal-700", "--teal-800", "--teal-900", "--teal-950", "--text-2xl", "--text-2xs", "--text-2xs-mono", "--text-3xl", "--text-4xl", "--text-base", "--text-body", "--text-code", "--text-display", "--text-glyph-min", "--text-heading", "--text-inverse", "--text-lg", "--text-md", "--text-muted", "--text-num", "--text-primary", "--text-secondary", "--text-sm", "--text-strong", "--text-xl", "--text-xs", "--title-cell-gap", "--title-cell-icon", "--title-cell-py", "--title-cell-tile", "--title-cell-tile-gap", "--title-cell-tile-r", "--tooltip-bg", "--tooltip-fg", "--topbar-h", "--track", "--tracking-2xl", "--tracking-2xs", "--tracking-3xl", "--tracking-4xl", "--tracking-base", "--tracking-display", "--tracking-lg", "--tracking-md", "--tracking-num", "--tracking-sm", "--tracking-xl", "--tracking-xs", "--warning", "--warning-bg", "--warning-text", "--weight-light", "--weight-medium", "--weight-regular", "--weight-semibold", "--z-drawer", "--z-menu", "--z-modal", "--z-sticky", "--z-toast", "--z-tooltip"];
|
|
22201
|
+
const tokenNames = ["--action-dark", "--action-dark-active", "--action-dark-fg", "--action-dark-hover", "--action-primary", "--action-primary-active", "--action-primary-hover", "--ai-glow-blur", "--ai-glow-opacity", "--ai-gradient-end", "--ai-gradient-start", "--ai-gradient-stops", "--ai-ring-rest-track", "--ai-ring-width", "--ai-spin-hover", "--ai-spin-rest", "--ai-tint", "--ai-tint-press", "--amber-100", "--amber-200", "--amber-300", "--amber-400", "--amber-50", "--amber-500", "--amber-600", "--amber-700", "--amber-800", "--amber-900", "--amber-950", "--bar-card-h", "--bar-h", "--bg-active", "--bg-app", "--bg-hover", "--bg-inset", "--bg-press", "--bg-raised", "--bg-scrim", "--bg-surface", "--bg-table-header", "--blue-100", "--blue-200", "--blue-300", "--blue-400", "--blue-50", "--blue-500", "--blue-600", "--blue-700", "--blue-800", "--blue-900", "--blue-950", "--border-card", "--border-control", "--border-split", "--border-strong", "--border-subtle", "--brand-alpha-12", "--brand-alpha-16", "--brand-alpha-24", "--brand-alpha-32", "--brand-alpha-8", "--card-pad", "--card-pad-sm", "--cat-join", "--cat-join-bg", "--cat-merge", "--cat-merge-bg", "--cat-output", "--cat-output-bg", "--cat-source", "--cat-source-bg", "--cat-transform", "--cat-transform-bg", "--cell-px", "--chart-area-alpha", "--chart-axis", "--chart-blue", "--chart-grid", "--chart-guide", "--chart-heat-1", "--chart-heat-2", "--chart-heat-3", "--chart-heat-4", "--chart-heat-5", "--chart-heat-ink", "--chart-label", "--chart-neg", "--chart-pos", "--chart-total", "--chart-track", "--check-size", "--checkbox-border", "--control-gap", "--control-h", "--control-icon", "--control-leading", "--control-px", "--control-text", "--control-tracking", "--count-h", "--cyan-100", "--cyan-200", "--cyan-300", "--cyan-400", "--cyan-50", "--cyan-500", "--cyan-600", "--cyan-700", "--cyan-800", "--cyan-900", "--cyan-950", "--danger", "--danger-active", "--danger-bg", "--danger-soft-active", "--danger-soft-hover", "--danger-text", "--dot-neutral", "--drawer-h", "--dropzone-border", "--dropzone-border-hover", "--dur", "--dur-fast", "--dur-instant", "--dur-slow", "--dur-slower", "--ease-in", "--ease-in-out", "--ease-out", "--edge", "--edge-pad", "--emerald-100", "--emerald-200", "--emerald-300", "--emerald-400", "--emerald-50", "--emerald-500", "--emerald-600", "--emerald-700", "--emerald-800", "--emerald-900", "--emerald-950", "--focus-border", "--focus-ring", "--font-mono", "--font-sans", "--group-gap", "--h-button", "--h-button-sm", "--h-input", "--h-nav-item", "--h-subnav-item", "--h-tree-item", "--hue-amber-bg", "--hue-amber-fg", "--hue-blue-bg", "--hue-blue-fg", "--hue-cyan-bg", "--hue-cyan-fg", "--hue-gray-bg", "--hue-gray-fg", "--hue-green-bg", "--hue-green-fg", "--hue-orange-bg", "--hue-orange-fg", "--hue-pink-bg", "--hue-pink-fg", "--hue-purple-bg", "--hue-purple-fg", "--hue-red-bg", "--hue-red-fg", "--hue-teal-bg", "--hue-teal-fg", "--info-bg", "--info-fg", "--leading-2xl", "--leading-2xs", "--leading-3xl", "--leading-4xl", "--leading-base", "--leading-code", "--leading-display", "--leading-lg", "--leading-md", "--leading-num", "--leading-sm", "--leading-xl", "--leading-xs", "--link", "--link-hover", "--neutral-0", "--neutral-100", "--neutral-200", "--neutral-300", "--neutral-400", "--neutral-50", "--neutral-500", "--neutral-600", "--neutral-700", "--neutral-800", "--neutral-900", "--neutral-950", "--neutral-alpha-12", "--neutral-alpha-16", "--neutral-alpha-2", "--neutral-alpha-24", "--neutral-alpha-32", "--neutral-alpha-4", "--neutral-alpha-48", "--neutral-alpha-64", "--neutral-alpha-8", "--neutral-alpha-80", "--on-accent", "--orange-100", "--orange-200", "--orange-300", "--orange-400", "--orange-50", "--orange-500", "--orange-600", "--orange-700", "--orange-800", "--orange-900", "--orange-950", "--overlay-drag", "--overlay-hover", "--overlay-press", "--overlay-selected", "--page-pad-x", "--page-pad-y", "--panel-w", "--pink-100", "--pink-200", "--pink-300", "--pink-400", "--pink-50", "--pink-500", "--pink-600", "--pink-700", "--pink-800", "--pink-900", "--pink-950", "--port-border", "--press-filter", "--press-filter-strong", "--purple-100", "--purple-200", "--purple-300", "--purple-400", "--purple-50", "--purple-500", "--purple-600", "--purple-700", "--purple-800", "--purple-900", "--purple-950", "--radius-full", "--radius-lg", "--radius-md", "--radius-node", "--radius-sm", "--radius-tile", "--rail-w", "--red-100", "--red-200", "--red-300", "--red-400", "--red-50", "--red-500", "--red-600", "--red-700", "--red-800", "--red-900", "--red-950", "--ring-focus", "--ring-surface", "--section-gap", "--selected-border", "--series-1", "--series-10", "--series-2", "--series-3", "--series-4", "--series-5", "--series-6", "--series-7", "--series-8", "--series-9", "--shadow-drawer", "--shadow-menu", "--shadow-modal", "--shadow-node", "--shadow-raised", "--shadow-selected", "--shadow-thumb", "--sidebar-w", "--skeleton", "--soft-active", "--soft-bg", "--soft-border", "--soft-hover", "--success", "--success-bg", "--success-strong", "--success-text", "--switch-h", "--switch-w", "--t-hover", "--t-theme", "--tag-h", "--teal-100", "--teal-200", "--teal-300", "--teal-400", "--teal-50", "--teal-500", "--teal-600", "--teal-700", "--teal-800", "--teal-900", "--teal-950", "--text-2xl", "--text-2xs", "--text-2xs-mono", "--text-3xl", "--text-4xl", "--text-base", "--text-body", "--text-code", "--text-display", "--text-glyph-min", "--text-heading", "--text-inverse", "--text-lg", "--text-md", "--text-muted", "--text-num", "--text-primary", "--text-secondary", "--text-sm", "--text-strong", "--text-xl", "--text-xs", "--title-cell-gap", "--title-cell-icon", "--title-cell-py", "--title-cell-tile", "--title-cell-tile-gap", "--title-cell-tile-r", "--tooltip-bg", "--tooltip-fg", "--topbar-h", "--track", "--tracking-2xl", "--tracking-2xs", "--tracking-3xl", "--tracking-4xl", "--tracking-base", "--tracking-display", "--tracking-lg", "--tracking-md", "--tracking-num", "--tracking-sm", "--tracking-xl", "--tracking-xs", "--warning", "--warning-bg", "--warning-text", "--weight-light", "--weight-medium", "--weight-regular", "--weight-semibold", "--z-drawer", "--z-menu", "--z-modal", "--z-sticky", "--z-toast", "--z-tooltip"];
|
|
20273
22202
|
let __ds_default_tokens_tokens_padim4;
|
|
20274
22203
|
try {
|
|
20275
22204
|
__ds_default_tokens_tokens_padim4 = {
|
|
@@ -20450,6 +22379,10 @@ __ds_ns.Dropzone = __ds_scope.Dropzone;
|
|
|
20450
22379
|
|
|
20451
22380
|
__ds_ns.Field = __ds_scope.Field;
|
|
20452
22381
|
|
|
22382
|
+
__ds_ns.GLOBAL_SEARCH_LABELS = __ds_scope.GLOBAL_SEARCH_LABELS;
|
|
22383
|
+
|
|
22384
|
+
__ds_ns.GlobalSearch = __ds_scope.GlobalSearch;
|
|
22385
|
+
|
|
20453
22386
|
__ds_ns.Input = __ds_scope.Input;
|
|
20454
22387
|
|
|
20455
22388
|
__ds_ns.Textarea = __ds_scope.Textarea;
|
|
@@ -20472,6 +22405,10 @@ __ds_ns.Slider = __ds_scope.Slider;
|
|
|
20472
22405
|
|
|
20473
22406
|
__ds_ns.Switch = __ds_scope.Switch;
|
|
20474
22407
|
|
|
22408
|
+
__ds_ns.GS_KINDS = __ds_scope.GS_KINDS;
|
|
22409
|
+
|
|
22410
|
+
__ds_ns.GS_ICONS = __ds_scope.GS_ICONS;
|
|
22411
|
+
|
|
20475
22412
|
__ds_ns.RELATIVE_TIME_UNITS = __ds_scope.RELATIVE_TIME_UNITS;
|
|
20476
22413
|
|
|
20477
22414
|
__ds_ns.RELATIVE_TIME_LABELS = __ds_scope.RELATIVE_TIME_LABELS;
|