@unofficialbox/box-open-elements 0.19.0 → 0.21.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/dist/components/actions/menu-item.d.ts +2 -0
- package/dist/components/actions/menu-item.js +4 -0
- package/dist/components/collections/card.js +6 -0
- package/dist/components/collections/check-list.d.ts +10 -0
- package/dist/components/collections/check-list.js +8 -0
- package/dist/components/collections/document-list.d.ts +10 -0
- package/dist/components/collections/document-list.js +8 -0
- package/dist/components/collections/fact-list.d.ts +10 -0
- package/dist/components/collections/fact-list.js +8 -0
- package/dist/components/collections/result-blocks.d.ts +54 -0
- package/dist/components/collections/result-blocks.js +74 -0
- package/dist/components/feedback/alert.d.ts +2 -0
- package/dist/components/feedback/alert.js +17 -13
- package/dist/components/feedback/progress-bar.d.ts +9 -0
- package/dist/components/feedback/progress-bar.js +29 -3
- package/dist/components/feedback/status-icon.d.ts +10 -0
- package/dist/components/feedback/status-icon.js +26 -0
- package/dist/components/feedback/toast.d.ts +10 -1
- package/dist/components/feedback/toast.js +69 -27
- package/dist/components/forms/number-input.d.ts +1 -0
- package/dist/components/forms/number-input.js +9 -6
- package/dist/components/forms/search-field.js +16 -0
- package/dist/components/overlays/context-menu.d.ts +2 -0
- package/dist/components/overlays/context-menu.js +7 -0
- package/dist/components/overlays/dialog.js +19 -3
- package/dist/components/overlays/popover.js +6 -1
- package/dist/element-maps.d.ts +49 -19
- package/dist/entries/agent-workspace.d.ts +1 -0
- package/dist/entries/agent-workspace.js +1 -0
- package/dist/entries/call-console.d.ts +1 -0
- package/dist/entries/call-console.js +1 -0
- package/dist/entries/check-list.d.ts +1 -0
- package/dist/entries/check-list.js +1 -0
- package/dist/entries/document-list.d.ts +1 -0
- package/dist/entries/document-list.js +1 -0
- package/dist/entries/fact-list.d.ts +1 -0
- package/dist/entries/fact-list.js +1 -0
- package/dist/entries/result-blocks.d.ts +1 -0
- package/dist/entries/result-blocks.js +1 -0
- package/dist/entries/run-summary.d.ts +1 -0
- package/dist/entries/run-summary.js +1 -0
- package/dist/entries/status-icon.d.ts +1 -0
- package/dist/entries/status-icon.js +1 -0
- package/dist/foundations/a11y/announcer.d.ts +12 -0
- package/dist/foundations/a11y/announcer.js +75 -0
- package/dist/foundations/a11y/focus.js +46 -25
- package/dist/foundations/a11y/index.d.ts +2 -0
- package/dist/foundations/a11y/index.js +1 -0
- package/dist/foundations/icons/box-iconography.d.ts +472 -472
- package/dist/foundations/icons/box-iconography.generated.d.ts +1151 -679
- package/dist/foundations/icons/box-iconography.generated.js +1006 -3588
- package/dist/foundations/icons/glyphs/index.d.ts +1 -0
- package/dist/foundations/icons/glyphs/index.js +2 -0
- package/dist/foundations/icons/glyphs/package.json +1 -0
- package/dist/foundations/motion/behaviors.d.ts +8 -0
- package/dist/foundations/motion/behaviors.js +24 -0
- package/dist/foundations/motion/index.d.ts +2 -0
- package/dist/foundations/motion/index.js +2 -0
- package/dist/foundations/motion/scroll-pin.d.ts +19 -0
- package/dist/foundations/motion/scroll-pin.js +60 -0
- package/dist/foundations/motion/tokens.d.ts +2 -0
- package/dist/foundations/motion/tokens.js +2 -0
- package/dist/foundations/overlay/positioning.js +7 -0
- package/dist/foundations/profiles/registry.d.ts +3 -0
- package/dist/foundations/profiles/registry.js +3 -0
- package/dist/foundations/profiles/types.d.ts +3 -0
- package/dist/foundations/status/index.d.ts +6 -0
- package/dist/foundations/status/index.js +35 -0
- package/dist/foundations/tokens/box-dark.js +4 -1
- package/dist/foundations/tokens/box-defaults.js +3 -0
- package/dist/foundations/tokens/registry.d.ts +3 -0
- package/dist/foundations/tokens/registry.js +3 -0
- package/dist/foundations/tokens/types.d.ts +3 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -0
- package/dist/patterns/agent-chat/agent-chat.d.ts +9 -0
- package/dist/patterns/agent-chat/agent-chat.js +146 -24
- package/dist/patterns/agent-chat/controller.d.ts +3 -1
- package/dist/patterns/agent-chat/controller.js +92 -16
- package/dist/patterns/agent-chat/index.d.ts +1 -0
- package/dist/patterns/agent-chat/index.js +1 -0
- package/dist/patterns/agent-chat/ndjson.d.ts +5 -0
- package/dist/patterns/agent-chat/ndjson.js +41 -0
- package/dist/patterns/agent-chat/types.d.ts +44 -1
- package/dist/patterns/agent-workspace/agent-workspace.d.ts +28 -0
- package/dist/patterns/agent-workspace/agent-workspace.js +215 -0
- package/dist/patterns/agent-workspace/controller.d.ts +38 -0
- package/dist/patterns/agent-workspace/controller.js +65 -0
- package/dist/patterns/agent-workspace/index.d.ts +2 -0
- package/dist/patterns/agent-workspace/index.js +2 -0
- package/dist/patterns/call-console/call-console.d.ts +20 -0
- package/dist/patterns/call-console/call-console.js +201 -0
- package/dist/patterns/call-console/controller.d.ts +23 -0
- package/dist/patterns/call-console/controller.js +50 -0
- package/dist/patterns/call-console/http-transport.d.ts +3 -0
- package/dist/patterns/call-console/http-transport.js +26 -0
- package/dist/patterns/call-console/index.d.ts +4 -0
- package/dist/patterns/call-console/index.js +4 -0
- package/dist/patterns/call-console/types.d.ts +32 -0
- package/dist/patterns/call-console/types.js +8 -0
- package/dist/patterns/content-explorer/adapters/action-menu.js +7 -5
- package/dist/patterns/content-explorer/adapters/toolbar.js +6 -2
- package/dist/patterns/content-uploader/content-uploader.js +2 -1
- package/dist/patterns/file-request/file-request-builder.js +3 -0
- package/dist/patterns/flow-builder/flow-builder.d.ts +48 -0
- package/dist/patterns/flow-builder/flow-builder.js +200 -0
- package/dist/patterns/flow-builder/index.d.ts +3 -0
- package/dist/patterns/flow-builder/index.js +3 -0
- package/dist/patterns/flow-builder/model.d.ts +33 -0
- package/dist/patterns/flow-builder/model.js +28 -0
- package/dist/patterns/flow-builder/primitives.d.ts +47 -0
- package/dist/patterns/flow-builder/primitives.js +192 -0
- package/dist/patterns/lineage/lineage-graph.js +26 -6
- package/dist/patterns/notifications/notification-inbox.js +19 -3
- package/dist/patterns/preview/annotation-inspector.js +2 -2
- package/dist/patterns/run/index.d.ts +2 -0
- package/dist/patterns/run/index.js +2 -0
- package/dist/patterns/run/progress.d.ts +24 -0
- package/dist/patterns/run/progress.js +32 -0
- package/dist/patterns/run/run-summary.d.ts +21 -0
- package/dist/patterns/run/run-summary.js +82 -0
- package/dist/patterns/run/run-trace.d.ts +1 -0
- package/dist/patterns/run/run-trace.js +14 -3
- package/dist/patterns/undo/index.d.ts +19 -0
- package/dist/patterns/undo/index.js +106 -0
- package/package.json +23 -2
package/dist/element-maps.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { AccessStats } from "./patterns/share/access-stats.js";
|
|
|
10
10
|
import type { Accordion } from "./components/navigation/accordion.js";
|
|
11
11
|
import type { ActivityDensityStrip } from "./patterns/audit/activity-density.js";
|
|
12
12
|
import type { AgentChat } from "./patterns/agent-chat/agent-chat.js";
|
|
13
|
+
import type { AgentWorkspace } from "./patterns/agent-workspace/agent-workspace.js";
|
|
13
14
|
import type { Alert } from "./components/feedback/alert.js";
|
|
14
15
|
import type { AnnotationInspector } from "./patterns/preview/annotation-inspector.js";
|
|
15
16
|
import type { AnnotationThread } from "./patterns/preview/annotation-thread.js";
|
|
@@ -25,25 +26,21 @@ import type { BulkActionBar } from "./patterns/item/bulk-action-bar.js";
|
|
|
25
26
|
import type { Button } from "./components/actions/button.js";
|
|
26
27
|
import type { ButtonGroup } from "./components/actions/button-group.js";
|
|
27
28
|
import type { Calendar } from "./components/forms/calendar.js";
|
|
29
|
+
import type { CallConsole } from "./patterns/call-console/call-console.js";
|
|
28
30
|
import type { Card } from "./components/collections/card.js";
|
|
29
31
|
import type { Carousel } from "./components/collections/carousel.js";
|
|
30
32
|
import type { CategorySelector } from "./components/forms/category-selector.js";
|
|
31
33
|
import type { ChartPanel } from "./patterns/insights/chart-panel.js";
|
|
34
|
+
import type { CheckList } from "./components/collections/check-list.js";
|
|
32
35
|
import type { Checkbox } from "./components/forms/checkbox.js";
|
|
33
36
|
import type { CheckboxGroup } from "./components/forms/checkbox-group.js";
|
|
34
37
|
import type { Chip } from "./components/feedback/chip.js";
|
|
38
|
+
import type { CodeBlock } from "./components/output/code-block.js";
|
|
35
39
|
import type { CollaboratorAvatars } from "./patterns/share/collaborator-avatars.js";
|
|
36
40
|
import type { ColorPicker } from "./components/forms/color-picker.js";
|
|
37
41
|
import type { Combobox } from "./components/forms/combobox.js";
|
|
38
42
|
import type { CommandPalette } from "./components/overlays/command-palette.js";
|
|
39
43
|
import type { CommentThread } from "./patterns/comments/comment-thread.js";
|
|
40
|
-
import type { CodeBlock } from "./components/output/code-block.js";
|
|
41
|
-
import type { FormattedDate } from "./components/output/formatted-date.js";
|
|
42
|
-
import type { Indicator } from "./components/feedback/indicator.js";
|
|
43
|
-
import type { TileGroup } from "./components/forms/tile-group.js";
|
|
44
|
-
import type { FormattedFileSize } from "./components/output/formatted-file-size.js";
|
|
45
|
-
import type { FormattedNumber } from "./components/output/formatted-number.js";
|
|
46
|
-
import type { RelativeTime } from "./components/output/relative-time.js";
|
|
47
44
|
import type { CompareView } from "./patterns/diff/compare-view.js";
|
|
48
45
|
import type { ContactDatalistItem } from "./components/identity/contact-datalist-item.js";
|
|
49
46
|
import type { ContentExplorer } from "./patterns/content-explorer/content-explorer.js";
|
|
@@ -56,7 +53,7 @@ import type { DateField } from "./components/forms/date-field.js";
|
|
|
56
53
|
import type { Dialog } from "./components/overlays/dialog.js";
|
|
57
54
|
import type { DiffViewer } from "./patterns/diff/diff-viewer.js";
|
|
58
55
|
import type { Divider } from "./components/layout/divider.js";
|
|
59
|
-
import type {
|
|
56
|
+
import type { DocumentList } from "./components/collections/document-list.js";
|
|
60
57
|
import type { DonutChart } from "./patterns/insights/donut-chart.js";
|
|
61
58
|
import type { DraggableList } from "./components/collections/draggable-list.js";
|
|
62
59
|
import type { Drawer } from "./components/overlays/drawer.js";
|
|
@@ -72,19 +69,31 @@ import type { ExplorerItems } from "./patterns/content-explorer/adapters/items.j
|
|
|
72
69
|
import type { ExplorerList } from "./patterns/content-explorer/adapters/list.js";
|
|
73
70
|
import type { ExplorerTable } from "./patterns/content-explorer/adapters/table.js";
|
|
74
71
|
import type { ExplorerToolbar } from "./patterns/content-explorer/adapters/toolbar.js";
|
|
72
|
+
import type { FactList } from "./components/collections/fact-list.js";
|
|
75
73
|
import type { Fieldset } from "./components/forms/fieldset.js";
|
|
76
74
|
import type { FileRequestBuilder } from "./patterns/file-request/file-request-builder.js";
|
|
77
75
|
import type { FilterBar } from "./patterns/search/filter-bar.js";
|
|
76
|
+
import type { FlowBuilder } from "./patterns/flow-builder/flow-builder.js";
|
|
77
|
+
import type { FlowCard } from "./patterns/flow-builder/primitives.js";
|
|
78
|
+
import type { FlowSpine } from "./patterns/flow-builder/primitives.js";
|
|
78
79
|
import type { FormWizard } from "./patterns/form-wizard/form-wizard.js";
|
|
80
|
+
import type { FormattedDate } from "./components/output/formatted-date.js";
|
|
81
|
+
import type { FormattedDuration } from "./components/output/formatted-duration.js";
|
|
82
|
+
import type { FormattedFileSize } from "./components/output/formatted-file-size.js";
|
|
83
|
+
import type { FormattedNumber } from "./components/output/formatted-number.js";
|
|
79
84
|
import type { GovernancePanel } from "./patterns/governance/governance-panel.js";
|
|
85
|
+
import type { Grid } from "./components/layout/grid.js";
|
|
80
86
|
import type { GridView } from "./components/collections/grid-view.js";
|
|
81
87
|
import type { GuideTooltip } from "./components/overlays/guide-tooltip.js";
|
|
82
88
|
import type { HelpText } from "./components/feedback/help-text.js";
|
|
83
89
|
import type { IconButton } from "./components/actions/icon-button.js";
|
|
84
90
|
import type { Illustration } from "./components/visuals/illustration.js";
|
|
91
|
+
import type { Indicator } from "./components/feedback/indicator.js";
|
|
92
|
+
import type { InsertPoint } from "./patterns/flow-builder/primitives.js";
|
|
85
93
|
import type { InviteCollaboratorsModal } from "./patterns/share/invite-collaborators-modal.js";
|
|
86
94
|
import type { ItemDetailsPanel } from "./patterns/item/item-details-panel.js";
|
|
87
95
|
import type { ItemForm } from "./patterns/item/item-form.js";
|
|
96
|
+
import type { KindPicker } from "./patterns/flow-builder/primitives.js";
|
|
88
97
|
import type { LineChart } from "./patterns/insights/line-chart.js";
|
|
89
98
|
import type { LineageGraph } from "./patterns/lineage/lineage-graph.js";
|
|
90
99
|
import type { LinkButton } from "./components/actions/link-button.js";
|
|
@@ -100,6 +109,7 @@ import type { NotificationInbox } from "./patterns/notifications/notification-in
|
|
|
100
109
|
import type { Nudge } from "./components/feedback/nudge.js";
|
|
101
110
|
import type { NumberInput } from "./components/forms/number-input.js";
|
|
102
111
|
import type { Pagination } from "./components/collections/pagination.js";
|
|
112
|
+
import type { Path } from "./components/feedback/path.js";
|
|
103
113
|
import type { PermissionMatrix } from "./patterns/share/permission-matrix.js";
|
|
104
114
|
import type { Persona } from "./components/identity/persona.js";
|
|
105
115
|
import type { PillCloud } from "./components/forms/pill-cloud.js";
|
|
@@ -115,8 +125,11 @@ import type { ProvenanceStrip } from "./patterns/lineage/provenance-strip.js";
|
|
|
115
125
|
import type { RadioGroup } from "./components/forms/radio-group.js";
|
|
116
126
|
import type { RangeSlider } from "./components/forms/range-slider.js";
|
|
117
127
|
import type { Rating } from "./components/forms/rating.js";
|
|
128
|
+
import type { RelativeTime } from "./components/output/relative-time.js";
|
|
129
|
+
import type { ResultBlocks } from "./components/collections/result-blocks.js";
|
|
118
130
|
import type { ReviewQueueItem } from "./patterns/task/review-queue-item.js";
|
|
119
131
|
import type { RichTextInput } from "./components/forms/rich-text-input.js";
|
|
132
|
+
import type { RunSummary } from "./patterns/run/run-summary.js";
|
|
120
133
|
import type { RunTrace } from "./patterns/run/run-trace.js";
|
|
121
134
|
import type { SavedViewPicker } from "./patterns/search/saved-view-picker.js";
|
|
122
135
|
import type { SearchField } from "./components/forms/search-field.js";
|
|
@@ -133,7 +146,7 @@ import type { Slider } from "./components/forms/slider.js";
|
|
|
133
146
|
import type { SpinButton } from "./components/forms/spin-button.js";
|
|
134
147
|
import type { Spinner } from "./components/feedback/spinner.js";
|
|
135
148
|
import type { SplitView } from "./components/layout/split-view.js";
|
|
136
|
-
import type {
|
|
149
|
+
import type { StatusIcon } from "./components/feedback/status-icon.js";
|
|
137
150
|
import type { Switch } from "./components/forms/switch.js";
|
|
138
151
|
import type { Table } from "./components/collections/table.js";
|
|
139
152
|
import type { Tabs } from "./components/navigation/tabs.js";
|
|
@@ -142,9 +155,11 @@ import type { TaskAssignmentPanel } from "./patterns/task/task-assignment-panel.
|
|
|
142
155
|
import type { TextArea } from "./components/forms/text-area.js";
|
|
143
156
|
import type { TextField } from "./components/forms/text-field.js";
|
|
144
157
|
import type { ThumbnailCard } from "./components/collections/thumbnail-card.js";
|
|
158
|
+
import type { TileGroup } from "./components/forms/tile-group.js";
|
|
145
159
|
import type { TimeField } from "./components/forms/time-field.js";
|
|
146
160
|
import type { Timeline } from "./patterns/timeline/timeline.js";
|
|
147
161
|
import type { Toast } from "./components/feedback/toast.js";
|
|
162
|
+
import type { Toolbar } from "./components/actions/toolbar.js";
|
|
148
163
|
import type { Tooltip } from "./components/overlays/tooltip.js";
|
|
149
164
|
import type { Tree } from "./components/collections/tree.js";
|
|
150
165
|
import type { TreeGrid } from "./components/collections/tree-grid.js";
|
|
@@ -160,6 +175,7 @@ declare global {
|
|
|
160
175
|
"box-accordion": Accordion;
|
|
161
176
|
"box-activity-density": ActivityDensityStrip;
|
|
162
177
|
"box-agent-chat": AgentChat;
|
|
178
|
+
"box-agent-workspace": AgentWorkspace;
|
|
163
179
|
"box-alert": Alert;
|
|
164
180
|
"box-annotation-inspector": AnnotationInspector;
|
|
165
181
|
"box-annotation-thread": AnnotationThread;
|
|
@@ -175,25 +191,21 @@ declare global {
|
|
|
175
191
|
"box-button": Button;
|
|
176
192
|
"box-button-group": ButtonGroup;
|
|
177
193
|
"box-calendar": Calendar;
|
|
194
|
+
"box-call-console": CallConsole;
|
|
178
195
|
"box-card": Card;
|
|
179
196
|
"box-carousel": Carousel;
|
|
180
197
|
"box-category-selector": CategorySelector;
|
|
181
198
|
"box-chart-panel": ChartPanel;
|
|
199
|
+
"box-check-list": CheckList;
|
|
182
200
|
"box-checkbox": Checkbox;
|
|
183
201
|
"box-checkbox-group": CheckboxGroup;
|
|
184
202
|
"box-chip": Chip;
|
|
203
|
+
"box-code-block": CodeBlock;
|
|
185
204
|
"box-collaborator-avatars": CollaboratorAvatars;
|
|
186
205
|
"box-color-picker": ColorPicker;
|
|
187
206
|
"box-combobox": Combobox;
|
|
188
207
|
"box-command-palette": CommandPalette;
|
|
189
208
|
"box-comment-thread": CommentThread;
|
|
190
|
-
"box-code-block": CodeBlock;
|
|
191
|
-
"box-formatted-date": FormattedDate;
|
|
192
|
-
"box-indicator": Indicator;
|
|
193
|
-
"box-tile-group": TileGroup;
|
|
194
|
-
"box-formatted-file-size": FormattedFileSize;
|
|
195
|
-
"box-formatted-number": FormattedNumber;
|
|
196
|
-
"box-relative-time": RelativeTime;
|
|
197
209
|
"box-compare-view": CompareView;
|
|
198
210
|
"box-contact-datalist-item": ContactDatalistItem;
|
|
199
211
|
"box-content-explorer": ContentExplorer;
|
|
@@ -206,7 +218,7 @@ declare global {
|
|
|
206
218
|
"box-dialog": Dialog;
|
|
207
219
|
"box-diff-viewer": DiffViewer;
|
|
208
220
|
"box-divider": Divider;
|
|
209
|
-
"box-
|
|
221
|
+
"box-document-list": DocumentList;
|
|
210
222
|
"box-donut-chart": DonutChart;
|
|
211
223
|
"box-draggable-list": DraggableList;
|
|
212
224
|
"box-drawer": Drawer;
|
|
@@ -222,19 +234,31 @@ declare global {
|
|
|
222
234
|
"box-explorer-list": ExplorerList;
|
|
223
235
|
"box-explorer-table": ExplorerTable;
|
|
224
236
|
"box-explorer-toolbar": ExplorerToolbar;
|
|
237
|
+
"box-fact-list": FactList;
|
|
225
238
|
"box-fieldset": Fieldset;
|
|
226
239
|
"box-file-request-builder": FileRequestBuilder;
|
|
227
240
|
"box-filter-bar": FilterBar;
|
|
241
|
+
"box-flow-builder": FlowBuilder;
|
|
242
|
+
"box-flow-card": FlowCard;
|
|
243
|
+
"box-flow-spine": FlowSpine;
|
|
228
244
|
"box-form-wizard": FormWizard;
|
|
245
|
+
"box-formatted-date": FormattedDate;
|
|
246
|
+
"box-formatted-duration": FormattedDuration;
|
|
247
|
+
"box-formatted-file-size": FormattedFileSize;
|
|
248
|
+
"box-formatted-number": FormattedNumber;
|
|
229
249
|
"box-governance-panel": GovernancePanel;
|
|
250
|
+
"box-grid": Grid;
|
|
230
251
|
"box-grid-view": GridView;
|
|
231
252
|
"box-guide-tooltip": GuideTooltip;
|
|
232
253
|
"box-help-text": HelpText;
|
|
233
254
|
"box-icon-button": IconButton;
|
|
234
255
|
"box-illustration": Illustration;
|
|
256
|
+
"box-indicator": Indicator;
|
|
257
|
+
"box-insert-point": InsertPoint;
|
|
235
258
|
"box-invite-collaborators-modal": InviteCollaboratorsModal;
|
|
236
259
|
"box-item-details-panel": ItemDetailsPanel;
|
|
237
260
|
"box-item-form": ItemForm;
|
|
261
|
+
"box-kind-picker": KindPicker;
|
|
238
262
|
"box-line-chart": LineChart;
|
|
239
263
|
"box-lineage-graph": LineageGraph;
|
|
240
264
|
"box-link-button": LinkButton;
|
|
@@ -250,6 +274,7 @@ declare global {
|
|
|
250
274
|
"box-nudge": Nudge;
|
|
251
275
|
"box-number-input": NumberInput;
|
|
252
276
|
"box-pagination": Pagination;
|
|
277
|
+
"box-path": Path;
|
|
253
278
|
"box-permission-matrix": PermissionMatrix;
|
|
254
279
|
"box-persona": Persona;
|
|
255
280
|
"box-pill-cloud": PillCloud;
|
|
@@ -265,8 +290,11 @@ declare global {
|
|
|
265
290
|
"box-radio-group": RadioGroup;
|
|
266
291
|
"box-range-slider": RangeSlider;
|
|
267
292
|
"box-rating": Rating;
|
|
293
|
+
"box-relative-time": RelativeTime;
|
|
294
|
+
"box-result-blocks": ResultBlocks;
|
|
268
295
|
"box-review-queue-item": ReviewQueueItem;
|
|
269
296
|
"box-rich-text-input": RichTextInput;
|
|
297
|
+
"box-run-summary": RunSummary;
|
|
270
298
|
"box-run-trace": RunTrace;
|
|
271
299
|
"box-saved-view-picker": SavedViewPicker;
|
|
272
300
|
"box-search-field": SearchField;
|
|
@@ -283,7 +311,7 @@ declare global {
|
|
|
283
311
|
"box-spin-button": SpinButton;
|
|
284
312
|
"box-spinner": Spinner;
|
|
285
313
|
"box-split-view": SplitView;
|
|
286
|
-
"box-
|
|
314
|
+
"box-status-icon": StatusIcon;
|
|
287
315
|
"box-switch": Switch;
|
|
288
316
|
"box-table": Table;
|
|
289
317
|
"box-tabs": Tabs;
|
|
@@ -292,9 +320,11 @@ declare global {
|
|
|
292
320
|
"box-text-area": TextArea;
|
|
293
321
|
"box-text-field": TextField;
|
|
294
322
|
"box-thumbnail-card": ThumbnailCard;
|
|
323
|
+
"box-tile-group": TileGroup;
|
|
295
324
|
"box-time-field": TimeField;
|
|
296
325
|
"box-timeline": Timeline;
|
|
297
326
|
"box-toast": Toast;
|
|
327
|
+
"box-toolbar": Toolbar;
|
|
298
328
|
"box-tooltip": Tooltip;
|
|
299
329
|
"box-tree": Tree;
|
|
300
330
|
"box-tree-grid": TreeGrid;
|
|
@@ -307,4 +337,4 @@ declare global {
|
|
|
307
337
|
}
|
|
308
338
|
}
|
|
309
339
|
/** Every element tag the library registers, for host-side narrowing. */
|
|
310
|
-
export type BoxElementTagName = "box-access-stats" | "box-accordion" | "box-activity-density" | "box-agent-chat" | "box-alert" | "box-annotation-inspector" | "box-annotation-thread" | "box-annotation-toolbar" | "box-app-shell" | "box-audit-log" | "box-avatar" | "box-badge" | "box-badgeable" | "box-bar-chart" | "box-breadcrumb" | "box-bulk-action-bar" | "box-button" | "box-button-group" | "box-calendar" | "box-
|
|
340
|
+
export type BoxElementTagName = "box-access-stats" | "box-accordion" | "box-activity-density" | "box-agent-chat" | "box-agent-workspace" | "box-alert" | "box-annotation-inspector" | "box-annotation-thread" | "box-annotation-toolbar" | "box-app-shell" | "box-audit-log" | "box-avatar" | "box-badge" | "box-badgeable" | "box-bar-chart" | "box-breadcrumb" | "box-bulk-action-bar" | "box-button" | "box-button-group" | "box-calendar" | "box-call-console" | "box-card" | "box-carousel" | "box-category-selector" | "box-chart-panel" | "box-check-list" | "box-checkbox" | "box-checkbox-group" | "box-chip" | "box-code-block" | "box-collaborator-avatars" | "box-color-picker" | "box-combobox" | "box-command-palette" | "box-comment-thread" | "box-compare-view" | "box-contact-datalist-item" | "box-content-explorer" | "box-content-picker" | "box-content-sidebar" | "box-content-uploader" | "box-context-menu" | "box-datalist-item" | "box-date-field" | "box-dialog" | "box-diff-viewer" | "box-divider" | "box-document-list" | "box-donut-chart" | "box-draggable-list" | "box-drawer" | "box-drop-zone" | "box-dropdown" | "box-dual-listbox" | "box-due-badge" | "box-empty-state" | "box-error-mask" | "box-explorer-action-menu" | "box-explorer-breadcrumbs" | "box-explorer-items" | "box-explorer-list" | "box-explorer-table" | "box-explorer-toolbar" | "box-fact-list" | "box-fieldset" | "box-file-request-builder" | "box-filter-bar" | "box-flow-builder" | "box-flow-card" | "box-flow-spine" | "box-form-wizard" | "box-formatted-date" | "box-formatted-duration" | "box-formatted-file-size" | "box-formatted-number" | "box-governance-panel" | "box-grid" | "box-grid-view" | "box-guide-tooltip" | "box-help-text" | "box-icon-button" | "box-illustration" | "box-indicator" | "box-insert-point" | "box-invite-collaborators-modal" | "box-item-details-panel" | "box-item-form" | "box-kind-picker" | "box-line-chart" | "box-lineage-graph" | "box-link-button" | "box-menu" | "box-menu-item" | "box-metadata-filter-builder" | "box-metadata-inspector" | "box-metric-card" | "box-multi-select" | "box-nav-sidebar" | "box-notification-bell" | "box-notification-inbox" | "box-nudge" | "box-number-input" | "box-pagination" | "box-path" | "box-permission-matrix" | "box-persona" | "box-pill-cloud" | "box-pill-selector-dropdown" | "box-popover" | "box-presence" | "box-preview-element" | "box-preview-header" | "box-progress-bar" | "box-progress-ring" | "box-progress-steps" | "box-provenance-strip" | "box-radio-group" | "box-range-slider" | "box-rating" | "box-relative-time" | "box-result-blocks" | "box-review-queue-item" | "box-rich-text-input" | "box-run-summary" | "box-run-trace" | "box-saved-view-picker" | "box-search-field" | "box-search-results-header" | "box-section" | "box-segmented-control" | "box-select" | "box-share-panel" | "box-shortcuts-overlay" | "box-sidebar-toggle-button" | "box-signature-ceremony" | "box-skeleton" | "box-slider" | "box-spin-button" | "box-spinner" | "box-split-view" | "box-status-icon" | "box-switch" | "box-table" | "box-tabs" | "box-tag-input" | "box-task-assignment-panel" | "box-text-area" | "box-text-field" | "box-thumbnail-card" | "box-tile-group" | "box-time-field" | "box-timeline" | "box-toast" | "box-toolbar" | "box-tooltip" | "box-tree" | "box-tree-grid" | "box-unified-share-modal" | "box-version-graph" | "box-version-list" | "box-wizard-summary" | "box-work-queue" | "box-workload-board";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../patterns/agent-workspace/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../patterns/agent-workspace/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../patterns/call-console/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../patterns/call-console/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/check-list.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/check-list.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/document-list.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/document-list.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/fact-list.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/fact-list.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/result-blocks.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/collections/result-blocks.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../patterns/run/run-summary.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../patterns/run/run-summary.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/feedback/status-icon.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../components/feedback/status-icon.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type Politeness = "polite" | "assertive";
|
|
2
|
+
/** Install once near application startup. The returned cleanup removes both regions. SSR-safe. */
|
|
3
|
+
export declare function installAnnouncer(doc?: Document | undefined): () => void;
|
|
4
|
+
/** Queue text, including repeated messages, into an already-mounted live region. */
|
|
5
|
+
export declare function announce(message: string, politeness?: Politeness, doc?: Document | undefined): void;
|
|
6
|
+
/** Coalesce synchronous property updates and avoid duplicate component announcements. */
|
|
7
|
+
export declare class FeedbackAnnouncement {
|
|
8
|
+
private previous;
|
|
9
|
+
private revision;
|
|
10
|
+
update(host: HTMLElement, message: string, politeness: Politeness): void;
|
|
11
|
+
reset(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
const instances = new WeakMap();
|
|
2
|
+
/** Install once near application startup. The returned cleanup removes both regions. SSR-safe. */
|
|
3
|
+
export function installAnnouncer(doc = globalThis.document) {
|
|
4
|
+
if (!doc?.body)
|
|
5
|
+
return () => { };
|
|
6
|
+
const existing = instances.get(doc);
|
|
7
|
+
if (existing?.host.isConnected)
|
|
8
|
+
return existing.dispose;
|
|
9
|
+
existing?.dispose();
|
|
10
|
+
const host = doc.createElement("div");
|
|
11
|
+
host.dataset.boeAnnouncer = "";
|
|
12
|
+
host.style.cssText = "position:fixed;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;pointer-events:none";
|
|
13
|
+
const makeChannel = (politeness) => {
|
|
14
|
+
const region = doc.createElement("div");
|
|
15
|
+
region.setAttribute("role", politeness === "assertive" ? "alert" : "status");
|
|
16
|
+
region.setAttribute("aria-live", politeness);
|
|
17
|
+
region.setAttribute("aria-atomic", "true");
|
|
18
|
+
host.append(region);
|
|
19
|
+
return { region, queue: [] };
|
|
20
|
+
};
|
|
21
|
+
const channels = { polite: makeChannel("polite"), assertive: makeChannel("assertive") };
|
|
22
|
+
const dispose = () => {
|
|
23
|
+
for (const channel of Object.values(channels))
|
|
24
|
+
clearTimeout(channel.timer);
|
|
25
|
+
host.remove();
|
|
26
|
+
if (instances.get(doc)?.host === host)
|
|
27
|
+
instances.delete(doc);
|
|
28
|
+
};
|
|
29
|
+
doc.body.append(host);
|
|
30
|
+
instances.set(doc, { host, channels, dispose });
|
|
31
|
+
return dispose;
|
|
32
|
+
}
|
|
33
|
+
/** Queue text, including repeated messages, into an already-mounted live region. */
|
|
34
|
+
export function announce(message, politeness = "polite", doc = globalThis.document) {
|
|
35
|
+
if (!doc?.body || !message.trim())
|
|
36
|
+
return;
|
|
37
|
+
installAnnouncer(doc);
|
|
38
|
+
const channel = instances.get(doc).channels[politeness];
|
|
39
|
+
channel.queue.push(message);
|
|
40
|
+
if (channel.timer !== undefined)
|
|
41
|
+
return;
|
|
42
|
+
const next = () => {
|
|
43
|
+
channel.region.textContent = "";
|
|
44
|
+
// A separate rendering opportunity ensures an empty region exists first.
|
|
45
|
+
channel.timer = setTimeout(() => {
|
|
46
|
+
channel.region.textContent = channel.queue.shift() ?? "";
|
|
47
|
+
channel.timer = setTimeout(() => {
|
|
48
|
+
channel.timer = undefined;
|
|
49
|
+
if (channel.queue.length)
|
|
50
|
+
next();
|
|
51
|
+
}, 100);
|
|
52
|
+
}, 20);
|
|
53
|
+
};
|
|
54
|
+
next();
|
|
55
|
+
}
|
|
56
|
+
/** Coalesce synchronous property updates and avoid duplicate component announcements. */
|
|
57
|
+
export class FeedbackAnnouncement {
|
|
58
|
+
previous = "";
|
|
59
|
+
revision = 0;
|
|
60
|
+
update(host, message, politeness) {
|
|
61
|
+
const revision = ++this.revision;
|
|
62
|
+
if (!message) {
|
|
63
|
+
this.previous = "";
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
queueMicrotask(() => {
|
|
67
|
+
const key = `${politeness}:${message}`;
|
|
68
|
+
if (revision !== this.revision || !host.isConnected || key === this.previous)
|
|
69
|
+
return;
|
|
70
|
+
this.previous = key;
|
|
71
|
+
announce(message, politeness, host.ownerDocument);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
reset() { ++this.revision; this.previous = ""; }
|
|
75
|
+
}
|
|
@@ -9,37 +9,56 @@ const TABBABLE_SELECTOR = [
|
|
|
9
9
|
"textarea:not([disabled])",
|
|
10
10
|
"[tabindex]:not([tabindex='-1'])",
|
|
11
11
|
].join(", ");
|
|
12
|
-
const isDisabled = (element) => element.
|
|
12
|
+
const isDisabled = (element) => element.matches(":disabled") ||
|
|
13
|
+
element.hasAttribute("disabled") ||
|
|
13
14
|
element.disabled === true ||
|
|
14
15
|
element.getAttribute("aria-disabled") === "true";
|
|
15
16
|
const isVisible = (element) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!style) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
if (style.display === "none" || style.visibility === "hidden") {
|
|
28
|
-
return false;
|
|
17
|
+
for (let current = element; current;) {
|
|
18
|
+
if (current.hasAttribute("hidden") || current.hasAttribute("inert") || current.getAttribute("aria-hidden") === "true")
|
|
19
|
+
return false;
|
|
20
|
+
const style = current.ownerDocument.defaultView?.getComputedStyle(current);
|
|
21
|
+
if (style?.display === "none" || style?.visibility === "hidden")
|
|
22
|
+
return false;
|
|
23
|
+
const root = current.getRootNode();
|
|
24
|
+
current = current.assignedSlot ?? current.parentElement ?? (root instanceof ShadowRoot ? root.host : null);
|
|
29
25
|
}
|
|
30
26
|
return true;
|
|
31
27
|
};
|
|
28
|
+
const deepActiveElement = (root) => {
|
|
29
|
+
let active = root.activeElement;
|
|
30
|
+
while (active?.shadowRoot?.activeElement)
|
|
31
|
+
active = active.shadowRoot.activeElement;
|
|
32
|
+
return active;
|
|
33
|
+
};
|
|
32
34
|
/** Visible, enabled tabbable controls inside `container` (light or shadow). */
|
|
33
35
|
export const getTabbableElements = (container) => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const result = [];
|
|
37
|
+
const visit = (node) => {
|
|
38
|
+
const children = node instanceof HTMLSlotElement
|
|
39
|
+
? (node.assignedElements().length ? node.assignedElements() : Array.from(node.children))
|
|
40
|
+
: Array.from(node.children);
|
|
41
|
+
for (const child of children) {
|
|
42
|
+
if (!(child instanceof HTMLElement) || !isVisible(child))
|
|
43
|
+
continue;
|
|
44
|
+
const disabled = isDisabled(child);
|
|
45
|
+
// A disabled fieldset still permits controls in its first legend and
|
|
46
|
+
// non-form controls such as links. Let native :disabled filter each
|
|
47
|
+
// descendant instead of pruning the entire fieldset subtree.
|
|
48
|
+
if (disabled && (!(child instanceof HTMLFieldSetElement) || child.getAttribute("aria-disabled") === "true"))
|
|
49
|
+
continue;
|
|
50
|
+
if (!disabled && child.matches(TABBABLE_SELECTOR) && child.tabIndex >= 0)
|
|
51
|
+
result.push(child);
|
|
52
|
+
// An explicit negative tabindex removes a shadow host's entire focus
|
|
53
|
+
// scope from sequential navigation. Ordinary light-DOM containers with
|
|
54
|
+
// tabindex=-1 do not have that behavior.
|
|
55
|
+
if (child.shadowRoot && child.hasAttribute("tabindex") && child.tabIndex < 0)
|
|
56
|
+
continue;
|
|
57
|
+
visit(child.shadowRoot ?? child);
|
|
40
58
|
}
|
|
41
|
-
|
|
42
|
-
|
|
59
|
+
};
|
|
60
|
+
visit(container);
|
|
61
|
+
return result;
|
|
43
62
|
};
|
|
44
63
|
/**
|
|
45
64
|
* Keep Tab / Shift+Tab cycling inside `container` while a modal is open.
|
|
@@ -57,7 +76,7 @@ export const trapTabKey = (event, container) => {
|
|
|
57
76
|
const first = focusables[0];
|
|
58
77
|
const last = focusables[focusables.length - 1];
|
|
59
78
|
const root = container.getRootNode?.();
|
|
60
|
-
const active = root
|
|
79
|
+
const active = deepActiveElement(root ?? document) ?? deepActiveElement(document);
|
|
61
80
|
if (event.shiftKey) {
|
|
62
81
|
if (active === first || !focusables.includes(active)) {
|
|
63
82
|
event.preventDefault();
|
|
@@ -74,6 +93,8 @@ export const trapTabKey = (event, container) => {
|
|
|
74
93
|
export class FocusRestore {
|
|
75
94
|
previous = null;
|
|
76
95
|
capture(from = document.activeElement) {
|
|
96
|
+
while (from?.shadowRoot?.activeElement)
|
|
97
|
+
from = from.shadowRoot.activeElement;
|
|
77
98
|
this.previous = from instanceof HTMLElement ? from : null;
|
|
78
99
|
}
|
|
79
100
|
restore() {
|
|
@@ -83,8 +104,8 @@ export class FocusRestore {
|
|
|
83
104
|
return;
|
|
84
105
|
}
|
|
85
106
|
queueMicrotask(() => {
|
|
86
|
-
if (
|
|
87
|
-
target.focus();
|
|
107
|
+
if (target.isConnected && isVisible(target) && !isDisabled(target)) {
|
|
108
|
+
target.focus({ preventScroll: true });
|
|
88
109
|
}
|
|
89
110
|
});
|
|
90
111
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { announce, installAnnouncer } from "./announcer.js";
|
|
2
|
+
export type { Politeness } from "./announcer.js";
|
|
1
3
|
export { applyRovingTabindex, focusRovingItem, handleRovingKeydown, nextRovingIndex, } from "./keyboard.js";
|
|
2
4
|
export type { RovingKeyOptions, RovingOrientation } from "./keyboard.js";
|
|
3
5
|
export { FocusRestore, getTabbableElements, trapTabKey } from "./focus.js";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { announce, installAnnouncer } from "./announcer.js";
|
|
1
2
|
export { applyRovingTabindex, focusRovingItem, handleRovingKeydown, nextRovingIndex, } from "./keyboard.js";
|
|
2
3
|
export { FocusRestore, getTabbableElements, trapTabKey } from "./focus.js";
|
|
3
4
|
export { boeHeadingResetStyles, headingCloseTag, headingOpenTag, renderHeadingHtml, } from "./heading.js";
|