@flanksource/clicky-ui 0.1.0 → 0.2.2
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/README.md +29 -2
- package/dist/api-explorer.d.ts +5 -0
- package/dist/api-explorer.d.ts.map +1 -0
- package/dist/api-explorer.js +25 -0
- package/dist/api-explorer.js.map +1 -0
- package/dist/clicky.d.ts +2 -0
- package/dist/clicky.d.ts.map +1 -0
- package/dist/clicky.js +5 -0
- package/dist/clicky.js.map +1 -0
- package/dist/components/DatePicker.d.ts +18 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker.js +63 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DateTimePicker.d.ts +18 -0
- package/dist/components/DateTimePicker.d.ts.map +1 -0
- package/dist/components/DateTimePicker.js +84 -0
- package/dist/components/DateTimePicker.js.map +1 -0
- package/dist/components/FilterBar.d.ts +180 -0
- package/dist/components/FilterBar.d.ts.map +1 -0
- package/dist/components/FilterBar.js +1685 -0
- package/dist/components/FilterBar.js.map +1 -0
- package/dist/components/MultiSelect.d.ts +19 -0
- package/dist/components/MultiSelect.d.ts.map +1 -0
- package/dist/components/MultiSelect.js +143 -0
- package/dist/components/MultiSelect.js.map +1 -0
- package/dist/components/RangeSlider.d.ts +16 -0
- package/dist/components/RangeSlider.d.ts.map +1 -0
- package/dist/components/RangeSlider.js +92 -0
- package/dist/components/RangeSlider.js.map +1 -0
- package/dist/components/button.d.ts +21 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +126 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/density-switcher.d.ts +7 -0
- package/dist/components/density-switcher.d.ts.map +1 -0
- package/dist/components/density-switcher.js +32 -0
- package/dist/components/density-switcher.js.map +1 -0
- package/dist/components/icon-menu-picker.d.ts +23 -0
- package/dist/components/icon-menu-picker.d.ts.map +1 -0
- package/dist/components/icon-menu-picker.js +192 -0
- package/dist/components/icon-menu-picker.js.map +1 -0
- package/dist/components/select.d.ts +15 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +39 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/theme-switcher.d.ts +7 -0
- package/dist/components/theme-switcher.d.ts.map +1 -0
- package/dist/components/theme-switcher.js +42 -0
- package/dist/components/theme-switcher.js.map +1 -0
- package/dist/components.d.ts +15 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +33 -0
- package/dist/components.js.map +1 -0
- package/dist/data/AnsiHtml.d.ts +7 -0
- package/dist/data/AnsiHtml.d.ts.map +1 -0
- package/dist/data/AnsiHtml.js +71 -0
- package/dist/data/AnsiHtml.js.map +1 -0
- package/dist/data/Avatar.d.ts +32 -0
- package/dist/data/Avatar.d.ts.map +1 -0
- package/dist/data/Avatar.js +201 -0
- package/dist/data/Avatar.js.map +1 -0
- package/dist/data/AvatarBadge.d.ts +26 -0
- package/dist/data/AvatarBadge.d.ts.map +1 -0
- package/dist/data/AvatarBadge.js +104 -0
- package/dist/data/AvatarBadge.js.map +1 -0
- package/dist/data/Badge.d.ts +44 -0
- package/dist/data/Badge.d.ts.map +1 -0
- package/dist/data/Badge.js +667 -0
- package/dist/data/Badge.js.map +1 -0
- package/dist/data/Clicky.d.ts +147 -0
- package/dist/data/Clicky.d.ts.map +1 -0
- package/dist/data/Clicky.fixtures.d.ts +3 -0
- package/dist/data/Clicky.fixtures.d.ts.map +1 -0
- package/dist/data/Clicky.js +1960 -0
- package/dist/data/Clicky.js.map +1 -0
- package/dist/data/DataTable.d.ts +95 -0
- package/dist/data/DataTable.d.ts.map +1 -0
- package/dist/data/DataTable.js +1464 -0
- package/dist/data/DataTable.js.map +1 -0
- package/dist/data/FilterPill.d.ts +29 -0
- package/dist/data/FilterPill.d.ts.map +1 -0
- package/dist/data/FilterPill.js +153 -0
- package/dist/data/FilterPill.js.map +1 -0
- package/dist/data/Gauge.d.ts +15 -0
- package/dist/data/Gauge.d.ts.map +1 -0
- package/dist/data/Gauge.js +63 -0
- package/dist/data/Gauge.js.map +1 -0
- package/dist/data/Icon.d.ts +53 -0
- package/dist/data/Icon.d.ts.map +1 -0
- package/dist/data/Icon.js +115 -0
- package/dist/data/Icon.js.map +1 -0
- package/dist/data/JsonView.d.ts +8 -0
- package/dist/data/JsonView.d.ts.map +1 -0
- package/dist/data/JsonView.js +74 -0
- package/dist/data/JsonView.js.map +1 -0
- package/dist/data/KeyValueList.d.ts +17 -0
- package/dist/data/KeyValueList.d.ts.map +1 -0
- package/dist/data/KeyValueList.js +33 -0
- package/dist/data/KeyValueList.js.map +1 -0
- package/dist/data/LogViewer.d.ts +10 -0
- package/dist/data/LogViewer.d.ts.map +1 -0
- package/dist/data/LogViewer.js +46 -0
- package/dist/data/LogViewer.js.map +1 -0
- package/dist/data/LogsTable.d.ts +27 -0
- package/dist/data/LogsTable.d.ts.map +1 -0
- package/dist/data/LogsTable.js +580 -0
- package/dist/data/LogsTable.js.map +1 -0
- package/dist/data/Markdown.d.ts +6 -0
- package/dist/data/Markdown.d.ts.map +1 -0
- package/dist/data/Markdown.js +59 -0
- package/dist/data/Markdown.js.map +1 -0
- package/dist/data/MatrixTable.d.ts +22 -0
- package/dist/data/MatrixTable.d.ts.map +1 -0
- package/dist/data/MatrixTable.js +164 -0
- package/dist/data/MatrixTable.js.map +1 -0
- package/dist/data/MethodBadge.d.ts +6 -0
- package/dist/data/MethodBadge.d.ts.map +1 -0
- package/dist/data/MethodBadge.js +18 -0
- package/dist/data/MethodBadge.js.map +1 -0
- package/dist/data/ProgressBar.d.ts +13 -0
- package/dist/data/ProgressBar.d.ts.map +1 -0
- package/dist/data/ProgressBar.js +34 -0
- package/dist/data/ProgressBar.js.map +1 -0
- package/dist/data/SortableHeader.d.ts +12 -0
- package/dist/data/SortableHeader.d.ts.map +1 -0
- package/dist/data/SortableHeader.js +33 -0
- package/dist/data/SortableHeader.js.map +1 -0
- package/dist/data/TabButton.d.ts +12 -0
- package/dist/data/TabButton.d.ts.map +1 -0
- package/dist/data/TabButton.js +45 -0
- package/dist/data/TabButton.js.map +1 -0
- package/dist/data/Tree.d.ts +35 -0
- package/dist/data/Tree.d.ts.map +1 -0
- package/dist/data/Tree.js +236 -0
- package/dist/data/Tree.js.map +1 -0
- package/dist/data/TreeGroupHeader.d.ts +11 -0
- package/dist/data/TreeGroupHeader.d.ts.map +1 -0
- package/dist/data/TreeGroupHeader.js +41 -0
- package/dist/data/TreeGroupHeader.js.map +1 -0
- package/dist/data/TreeNode.d.ts +43 -0
- package/dist/data/TreeNode.d.ts.map +1 -0
- package/dist/data/TreeNode.js +100 -0
- package/dist/data/TreeNode.js.map +1 -0
- package/dist/data/cells/StatusDot.d.ts +11 -0
- package/dist/data/cells/StatusDot.d.ts.map +1 -0
- package/dist/data/cells/StatusDot.js +38 -0
- package/dist/data/cells/StatusDot.js.map +1 -0
- package/dist/data/cells/TagList.d.ts +59 -0
- package/dist/data/cells/TagList.d.ts.map +1 -0
- package/dist/data/cells/TagList.js +257 -0
- package/dist/data/cells/TagList.js.map +1 -0
- package/dist/data/cells/Timestamp.d.ts +46 -0
- package/dist/data/cells/Timestamp.d.ts.map +1 -0
- package/dist/data/cells/Timestamp.js +146 -0
- package/dist/data/cells/Timestamp.js.map +1 -0
- package/dist/data/cells/status-mapping.d.ts +8 -0
- package/dist/data/cells/status-mapping.d.ts.map +1 -0
- package/dist/data/cells/status-mapping.js +44 -0
- package/dist/data/cells/status-mapping.js.map +1 -0
- package/dist/data/code-highlight.d.ts +12 -0
- package/dist/data/code-highlight.d.ts.map +1 -0
- package/dist/data/code-highlight.js +28 -0
- package/dist/data/code-highlight.js.map +1 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +9 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js +445 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -0
- package/dist/data/diagnostics/DiagnosticsTree.d.ts +9 -0
- package/dist/data/diagnostics/DiagnosticsTree.d.ts.map +1 -0
- package/dist/data/diagnostics/DiagnosticsTree.js +78 -0
- package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -0
- package/dist/data/diagnostics/ErrorDetails.d.ts +20 -0
- package/dist/data/diagnostics/ErrorDetails.d.ts.map +1 -0
- package/dist/data/diagnostics/ErrorDetails.js +157 -0
- package/dist/data/diagnostics/ErrorDetails.js.map +1 -0
- package/dist/data/diagnostics/GoroutineCard.d.ts +10 -0
- package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -0
- package/dist/data/diagnostics/GoroutineCard.js +75 -0
- package/dist/data/diagnostics/GoroutineCard.js.map +1 -0
- package/dist/data/diagnostics/JvmStackTrace.d.ts +11 -0
- package/dist/data/diagnostics/JvmStackTrace.d.ts.map +1 -0
- package/dist/data/diagnostics/JvmStackTrace.js +26 -0
- package/dist/data/diagnostics/JvmStackTrace.js.map +1 -0
- package/dist/data/diagnostics/RenderedStackTrace.d.ts +18 -0
- package/dist/data/diagnostics/RenderedStackTrace.d.ts.map +1 -0
- package/dist/data/diagnostics/RenderedStackTrace.js +235 -0
- package/dist/data/diagnostics/RenderedStackTrace.js.map +1 -0
- package/dist/data/diagnostics/ThreadCard.d.ts +10 -0
- package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -0
- package/dist/data/diagnostics/ThreadCard.js +78 -0
- package/dist/data/diagnostics/ThreadCard.js.map +1 -0
- package/dist/data/diagnostics/error-diagnostics.d.ts +26 -0
- package/dist/data/diagnostics/error-diagnostics.d.ts.map +1 -0
- package/dist/data/diagnostics/error-diagnostics.js +108 -0
- package/dist/data/diagnostics/error-diagnostics.js.map +1 -0
- package/dist/data/diagnostics/fixtures.d.ts +3 -0
- package/dist/data/diagnostics/fixtures.d.ts.map +1 -0
- package/dist/data/diagnostics/jvm-stacktrace.d.ts +34 -0
- package/dist/data/diagnostics/jvm-stacktrace.d.ts.map +1 -0
- package/dist/data/diagnostics/jvm-stacktrace.js +190 -0
- package/dist/data/diagnostics/jvm-stacktrace.js.map +1 -0
- package/dist/data/diagnostics/stacktrace-parse.d.ts +11 -0
- package/dist/data/diagnostics/stacktrace-parse.d.ts.map +1 -0
- package/dist/data/diagnostics/stacktrace-parse.js +87 -0
- package/dist/data/diagnostics/stacktrace-parse.js.map +1 -0
- package/dist/data/diagnostics/stacktrace.d.ts +38 -0
- package/dist/data/diagnostics/stacktrace.d.ts.map +1 -0
- package/dist/data/diagnostics/stacktrace.js +119 -0
- package/dist/data/diagnostics/stacktrace.js.map +1 -0
- package/dist/data/diagnostics/types.d.ts +30 -0
- package/dist/data/diagnostics/types.d.ts.map +1 -0
- package/dist/data/diagnostics/utils.d.ts +8 -0
- package/dist/data/diagnostics/utils.d.ts.map +1 -0
- package/dist/data/diagnostics/utils.js +59 -0
- package/dist/data/diagnostics/utils.js.map +1 -0
- package/dist/data/har/HarPanel.d.ts +9 -0
- package/dist/data/har/HarPanel.d.ts.map +1 -0
- package/dist/data/har/HarPanel.js +175 -0
- package/dist/data/har/HarPanel.js.map +1 -0
- package/dist/data/har/fixtures.d.ts +3 -0
- package/dist/data/har/fixtures.d.ts.map +1 -0
- package/dist/data/har/types.d.ts +47 -0
- package/dist/data/har/types.d.ts.map +1 -0
- package/dist/data.d.ts +39 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +109 -0
- package/dist/data.js.map +1 -0
- package/dist/hooks/use-density.d.ts +22 -0
- package/dist/hooks/use-density.d.ts.map +1 -0
- package/dist/hooks/use-density.js +54 -0
- package/dist/hooks/use-density.js.map +1 -0
- package/dist/hooks/use-history-route.d.ts +6 -0
- package/dist/hooks/use-history-route.d.ts.map +1 -0
- package/dist/hooks/use-history-route.js +31 -0
- package/dist/hooks/use-history-route.js.map +1 -0
- package/dist/hooks/use-sort.d.ts +17 -0
- package/dist/hooks/use-sort.d.ts.map +1 -0
- package/dist/hooks/use-sort.js +42 -0
- package/dist/hooks/use-sort.js.map +1 -0
- package/dist/hooks/use-theme.d.ts +17 -0
- package/dist/hooks/use-theme.d.ts.map +1 -0
- package/dist/hooks/use-theme.js +68 -0
- package/dist/hooks/use-theme.js.map +1 -0
- package/dist/hooks.d.ts +5 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +14 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +195 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/Section.d.ts +23 -0
- package/dist/layout/Section.d.ts.map +1 -0
- package/dist/layout/Section.js +73 -0
- package/dist/layout/Section.js.map +1 -0
- package/dist/layout/SplitPane.d.ts +13 -0
- package/dist/layout/SplitPane.d.ts.map +1 -0
- package/dist/layout/SplitPane.js +72 -0
- package/dist/layout/SplitPane.js.map +1 -0
- package/dist/lib/palette.d.ts +4 -0
- package/dist/lib/palette.d.ts.map +1 -0
- package/dist/lib/palette.js +35 -0
- package/dist/lib/palette.js.map +1 -0
- package/dist/lib/size.d.ts +6 -0
- package/dist/lib/size.d.ts.map +1 -0
- package/dist/lib/size.js +14 -0
- package/dist/lib/size.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/overlay/HoverCard.d.ts +13 -0
- package/dist/overlay/HoverCard.d.ts.map +1 -0
- package/dist/overlay/HoverCard.js +170 -0
- package/dist/overlay/HoverCard.js.map +1 -0
- package/dist/overlay/Modal.d.ts +17 -0
- package/dist/overlay/Modal.d.ts.map +1 -0
- package/dist/overlay/Modal.js +91 -0
- package/dist/overlay/Modal.js.map +1 -0
- package/dist/rpc/AcceptPicker.d.ts +52 -0
- package/dist/rpc/AcceptPicker.d.ts.map +1 -0
- package/dist/rpc/AcceptPicker.js +126 -0
- package/dist/rpc/AcceptPicker.js.map +1 -0
- package/dist/rpc/ApiExplorer.d.ts +11 -0
- package/dist/rpc/ApiExplorer.d.ts.map +1 -0
- package/dist/rpc/ApiExplorer.js +37 -0
- package/dist/rpc/ApiExplorer.js.map +1 -0
- package/dist/rpc/CommandForm.d.ts +15 -0
- package/dist/rpc/CommandForm.d.ts.map +1 -0
- package/dist/rpc/CommandForm.js +356 -0
- package/dist/rpc/CommandForm.js.map +1 -0
- package/dist/rpc/CommandOutput.d.ts +11 -0
- package/dist/rpc/CommandOutput.d.ts.map +1 -0
- package/dist/rpc/CommandOutput.js +195 -0
- package/dist/rpc/CommandOutput.js.map +1 -0
- package/dist/rpc/EndpointList.d.ts +18 -0
- package/dist/rpc/EndpointList.d.ts.map +1 -0
- package/dist/rpc/EndpointList.js +56 -0
- package/dist/rpc/EndpointList.js.map +1 -0
- package/dist/rpc/EntityExplorerApp.d.ts +15 -0
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -0
- package/dist/rpc/EntityExplorerApp.js +282 -0
- package/dist/rpc/EntityExplorerApp.js.map +1 -0
- package/dist/rpc/ExecutionResult.d.ts +14 -0
- package/dist/rpc/ExecutionResult.d.ts.map +1 -0
- package/dist/rpc/ExecutionResult.js +51 -0
- package/dist/rpc/ExecutionResult.js.map +1 -0
- package/dist/rpc/FilterForm.d.ts +22 -0
- package/dist/rpc/FilterForm.d.ts.map +1 -0
- package/dist/rpc/FilterForm.js +392 -0
- package/dist/rpc/FilterForm.js.map +1 -0
- package/dist/rpc/InlineError.d.ts +7 -0
- package/dist/rpc/InlineError.d.ts.map +1 -0
- package/dist/rpc/InlineError.js +54 -0
- package/dist/rpc/InlineError.js.map +1 -0
- package/dist/rpc/OperationActionDialog.d.ts +12 -0
- package/dist/rpc/OperationActionDialog.d.ts.map +1 -0
- package/dist/rpc/OperationActionDialog.js +105 -0
- package/dist/rpc/OperationActionDialog.js.map +1 -0
- package/dist/rpc/OperationCatalog.d.ts +21 -0
- package/dist/rpc/OperationCatalog.d.ts.map +1 -0
- package/dist/rpc/OperationCatalog.js +339 -0
- package/dist/rpc/OperationCatalog.js.map +1 -0
- package/dist/rpc/OperationCommandPage.d.ts +22 -0
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -0
- package/dist/rpc/OperationCommandPage.js +484 -0
- package/dist/rpc/OperationCommandPage.js.map +1 -0
- package/dist/rpc/OperationEntityPage.d.ts +23 -0
- package/dist/rpc/OperationEntityPage.d.ts.map +1 -0
- package/dist/rpc/OperationEntityPage.js +218 -0
- package/dist/rpc/OperationEntityPage.js.map +1 -0
- package/dist/rpc/classify.d.ts +8 -0
- package/dist/rpc/classify.d.ts.map +1 -0
- package/dist/rpc/classify.js +76 -0
- package/dist/rpc/classify.js.map +1 -0
- package/dist/rpc/clickyMetadata.d.ts +12 -0
- package/dist/rpc/clickyMetadata.d.ts.map +1 -0
- package/dist/rpc/clickyMetadata.js +71 -0
- package/dist/rpc/clickyMetadata.js.map +1 -0
- package/dist/rpc/formMetadata.d.ts +27 -0
- package/dist/rpc/formMetadata.d.ts.map +1 -0
- package/dist/rpc/formMetadata.js +250 -0
- package/dist/rpc/formMetadata.js.map +1 -0
- package/dist/rpc/types.d.ts +109 -0
- package/dist/rpc/types.d.ts.map +1 -0
- package/dist/rpc/types.js +8 -0
- package/dist/rpc/types.js.map +1 -0
- package/dist/rpc/useOperations.d.ts +346 -0
- package/dist/rpc/useOperations.d.ts.map +1 -0
- package/dist/rpc/useOperations.js +31 -0
- package/dist/rpc/useOperations.js.map +1 -0
- package/dist/rpc.d.ts +14 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +37 -0
- package/dist/rpc.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/styles.d.ts +1 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +2 -0
- package/dist/styles.js.map +1 -0
- package/dist/tailwind-preset.d.ts +4 -0
- package/dist/tailwind-preset.d.ts.map +1 -0
- package/dist/tailwind-preset.js +69 -0
- package/dist/tailwind-preset.js.map +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +12 -0
- package/dist/utils.js.map +1 -0
- package/package.json +83 -40
- package/dist/index.d.mts +0 -834
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -2918
- package/dist/index.mjs.map +0 -1
- package/dist/tailwind-preset.d.mts +0 -7
- package/dist/tailwind-preset.d.mts.map +0 -1
- package/dist/tailwind-preset.mjs +0 -64
- package/dist/tailwind-preset.mjs.map +0 -1
- package/src/styles/tokens.css +0 -78
package/dist/index.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { cn } from "./lib/utils.js";
|
|
2
|
+
import { AVATAR_PALETTE, fnv1a32, paletteClass } from "./lib/palette.js";
|
|
3
|
+
import { SIZE_TOKENS, resolveSize } from "./lib/size.js";
|
|
4
|
+
import { ThemeProvider, useTheme } from "./hooks/use-theme.js";
|
|
5
|
+
import { DensityProvider, useDensity, useDensityValue } from "./hooks/use-density.js";
|
|
6
|
+
import { useSort } from "./hooks/use-sort.js";
|
|
7
|
+
import { useHistoryRoute } from "./hooks/use-history-route.js";
|
|
8
|
+
import { Button, buttonVariants } from "./components/button.js";
|
|
9
|
+
import { DatePicker } from "./components/DatePicker.js";
|
|
10
|
+
import { DateTimePicker } from "./components/DateTimePicker.js";
|
|
11
|
+
import { RangeSlider } from "./components/RangeSlider.js";
|
|
12
|
+
import { FilterBar } from "./components/FilterBar.js";
|
|
13
|
+
import { MultiSelect } from "./components/MultiSelect.js";
|
|
14
|
+
import { Select } from "./components/select.js";
|
|
15
|
+
import { ThemeSwitcher } from "./components/theme-switcher.js";
|
|
16
|
+
import { DensitySwitcher } from "./components/density-switcher.js";
|
|
17
|
+
import { IconMenuPicker } from "./components/icon-menu-picker.js";
|
|
18
|
+
import { SplitPane } from "./layout/SplitPane.js";
|
|
19
|
+
import { DetailEmptyState, Section } from "./layout/Section.js";
|
|
20
|
+
import { HoverCard } from "./overlay/HoverCard.js";
|
|
21
|
+
import { Modal } from "./overlay/Modal.js";
|
|
22
|
+
import { AnsiHtml } from "./data/AnsiHtml.js";
|
|
23
|
+
import { Avatar } from "./data/Avatar.js";
|
|
24
|
+
import { AvatarBadge } from "./data/AvatarBadge.js";
|
|
25
|
+
import { Badge, badgeVariants } from "./data/Badge.js";
|
|
26
|
+
import { DataTable, inferColumns } from "./data/DataTable.js";
|
|
27
|
+
import { Timestamp, chooseTimestampFormat, formatTimestamp, modeToFormat, parseTimestamp } from "./data/cells/Timestamp.js";
|
|
28
|
+
import { TagActionsProvider, TagList, normalizeTags, splitTagToken, tagActionsFromRecord, tagFilterTokens, useTagActions, useTagActionsValue } from "./data/cells/TagList.js";
|
|
29
|
+
import { StatusDot } from "./data/cells/StatusDot.js";
|
|
30
|
+
import { STATUS_TOKEN_GROUPS, normalizeStatus } from "./data/cells/status-mapping.js";
|
|
31
|
+
import { FilterPill, FilterPillGroup, FilterSeparator } from "./data/FilterPill.js";
|
|
32
|
+
import { Gauge } from "./data/Gauge.js";
|
|
33
|
+
import { Icon, setFallbackIconProvider } from "./data/Icon.js";
|
|
34
|
+
import { JsonView } from "./data/JsonView.js";
|
|
35
|
+
import { KeyValueList } from "./data/KeyValueList.js";
|
|
36
|
+
import { LogViewer } from "./data/LogViewer.js";
|
|
37
|
+
import { LogsTable, normalizeLogsTableRows } from "./data/LogsTable.js";
|
|
38
|
+
import { MatrixTable } from "./data/MatrixTable.js";
|
|
39
|
+
import { Markdown } from "./data/Markdown.js";
|
|
40
|
+
import { MethodBadge } from "./data/MethodBadge.js";
|
|
41
|
+
import { ProgressBar } from "./data/ProgressBar.js";
|
|
42
|
+
import { SortableHeader } from "./data/SortableHeader.js";
|
|
43
|
+
import { TabButton } from "./data/TabButton.js";
|
|
44
|
+
import { Tree } from "./data/Tree.js";
|
|
45
|
+
import { TreeNode } from "./data/TreeNode.js";
|
|
46
|
+
import { TreeGroupHeader } from "./data/TreeGroupHeader.js";
|
|
47
|
+
import { DiagnosticsTree } from "./data/diagnostics/DiagnosticsTree.js";
|
|
48
|
+
import { DiagnosticsDetailPanel } from "./data/diagnostics/DiagnosticsDetailPanel.js";
|
|
49
|
+
import { countProcesses, findProcessByPID, processLabel, processStateColor, processStateIcon } from "./data/diagnostics/utils.js";
|
|
50
|
+
import { countGoroutinesByState, countStackByState, detectDumpFormat, parseGoroutineDump, parseStackDump } from "./data/diagnostics/stacktrace.js";
|
|
51
|
+
import { countThreadsByState, parseJvmThreadDump } from "./data/diagnostics/jvm-stacktrace.js";
|
|
52
|
+
import { JvmStackFrameRow, JvmStackTrace } from "./data/diagnostics/JvmStackTrace.js";
|
|
53
|
+
import { StackTrace } from "./data/diagnostics/RenderedStackTrace.js";
|
|
54
|
+
import { parseJavaStackTrace } from "./data/diagnostics/stacktrace-parse.js";
|
|
55
|
+
import { CopyBadge, ErrorDetails, PrettyStackTrace } from "./data/diagnostics/ErrorDetails.js";
|
|
56
|
+
import { compactStackPath, isApplicationStackFrame, normalizeErrorDiagnostics, parseDiagnosticsStackTrace, parseInlineJsonContextValue } from "./data/diagnostics/error-diagnostics.js";
|
|
57
|
+
import { HarPanel } from "./data/har/HarPanel.js";
|
|
58
|
+
import { Clicky } from "./data/Clicky.js";
|
|
59
|
+
import { OperationCatalog } from "./rpc/OperationCatalog.js";
|
|
60
|
+
import { ACCEPT_OPTIONS, AcceptPicker, VIEW_OPTIONS } from "./rpc/AcceptPicker.js";
|
|
61
|
+
import { CommandForm } from "./rpc/CommandForm.js";
|
|
62
|
+
import { CommandOutput } from "./rpc/CommandOutput.js";
|
|
63
|
+
import { FilterForm } from "./rpc/FilterForm.js";
|
|
64
|
+
import { InlineError } from "./rpc/InlineError.js";
|
|
65
|
+
import { OperationActionDialog } from "./rpc/OperationActionDialog.js";
|
|
66
|
+
import { OperationEntityPage } from "./rpc/OperationEntityPage.js";
|
|
67
|
+
import { OperationCommandPage } from "./rpc/OperationCommandPage.js";
|
|
68
|
+
import { EndpointList } from "./rpc/EndpointList.js";
|
|
69
|
+
import { useOpenAPI, useOperationById, useOperations } from "./rpc/useOperations.js";
|
|
70
|
+
import { filterOperationsByDomain, findDetailEndpoint, findListEndpoint, normalizeRows, parseJsonBody } from "./rpc/classify.js";
|
|
71
|
+
import { isPositionalParam } from "./rpc/types.js";
|
|
72
|
+
export {
|
|
73
|
+
ACCEPT_OPTIONS,
|
|
74
|
+
AVATAR_PALETTE,
|
|
75
|
+
AcceptPicker,
|
|
76
|
+
AnsiHtml,
|
|
77
|
+
Avatar,
|
|
78
|
+
AvatarBadge,
|
|
79
|
+
Badge,
|
|
80
|
+
Button,
|
|
81
|
+
Clicky,
|
|
82
|
+
CommandForm,
|
|
83
|
+
CommandOutput,
|
|
84
|
+
CopyBadge,
|
|
85
|
+
DataTable,
|
|
86
|
+
DatePicker,
|
|
87
|
+
DateTimePicker,
|
|
88
|
+
DensityProvider,
|
|
89
|
+
DensitySwitcher,
|
|
90
|
+
DetailEmptyState,
|
|
91
|
+
DiagnosticsDetailPanel,
|
|
92
|
+
DiagnosticsTree,
|
|
93
|
+
EndpointList,
|
|
94
|
+
ErrorDetails,
|
|
95
|
+
FilterBar,
|
|
96
|
+
FilterForm,
|
|
97
|
+
FilterPill,
|
|
98
|
+
FilterPillGroup,
|
|
99
|
+
FilterSeparator,
|
|
100
|
+
Gauge,
|
|
101
|
+
HarPanel,
|
|
102
|
+
HoverCard,
|
|
103
|
+
Icon,
|
|
104
|
+
IconMenuPicker,
|
|
105
|
+
InlineError,
|
|
106
|
+
JsonView,
|
|
107
|
+
JvmStackFrameRow,
|
|
108
|
+
JvmStackTrace,
|
|
109
|
+
KeyValueList,
|
|
110
|
+
LogViewer,
|
|
111
|
+
LogsTable,
|
|
112
|
+
Markdown,
|
|
113
|
+
MatrixTable,
|
|
114
|
+
MethodBadge,
|
|
115
|
+
Modal,
|
|
116
|
+
MultiSelect,
|
|
117
|
+
OperationActionDialog,
|
|
118
|
+
OperationCatalog,
|
|
119
|
+
OperationCommandPage,
|
|
120
|
+
OperationEntityPage,
|
|
121
|
+
PrettyStackTrace,
|
|
122
|
+
ProgressBar,
|
|
123
|
+
RangeSlider,
|
|
124
|
+
SIZE_TOKENS,
|
|
125
|
+
STATUS_TOKEN_GROUPS,
|
|
126
|
+
Section,
|
|
127
|
+
Select,
|
|
128
|
+
SortableHeader,
|
|
129
|
+
SplitPane,
|
|
130
|
+
StackTrace,
|
|
131
|
+
StatusDot,
|
|
132
|
+
TabButton,
|
|
133
|
+
TagActionsProvider,
|
|
134
|
+
TagList,
|
|
135
|
+
ThemeProvider,
|
|
136
|
+
ThemeSwitcher,
|
|
137
|
+
Timestamp,
|
|
138
|
+
Tree,
|
|
139
|
+
TreeGroupHeader,
|
|
140
|
+
TreeNode,
|
|
141
|
+
VIEW_OPTIONS,
|
|
142
|
+
badgeVariants,
|
|
143
|
+
buttonVariants,
|
|
144
|
+
chooseTimestampFormat,
|
|
145
|
+
cn,
|
|
146
|
+
compactStackPath,
|
|
147
|
+
countGoroutinesByState,
|
|
148
|
+
countProcesses,
|
|
149
|
+
countStackByState,
|
|
150
|
+
countThreadsByState,
|
|
151
|
+
detectDumpFormat,
|
|
152
|
+
filterOperationsByDomain,
|
|
153
|
+
findDetailEndpoint,
|
|
154
|
+
findListEndpoint,
|
|
155
|
+
findProcessByPID,
|
|
156
|
+
fnv1a32,
|
|
157
|
+
formatTimestamp,
|
|
158
|
+
inferColumns,
|
|
159
|
+
isApplicationStackFrame,
|
|
160
|
+
isPositionalParam,
|
|
161
|
+
modeToFormat,
|
|
162
|
+
normalizeErrorDiagnostics,
|
|
163
|
+
normalizeLogsTableRows,
|
|
164
|
+
normalizeRows,
|
|
165
|
+
normalizeStatus,
|
|
166
|
+
normalizeTags,
|
|
167
|
+
paletteClass,
|
|
168
|
+
parseDiagnosticsStackTrace,
|
|
169
|
+
parseGoroutineDump,
|
|
170
|
+
parseInlineJsonContextValue,
|
|
171
|
+
parseJavaStackTrace,
|
|
172
|
+
parseJsonBody,
|
|
173
|
+
parseJvmThreadDump,
|
|
174
|
+
parseStackDump,
|
|
175
|
+
parseTimestamp,
|
|
176
|
+
processLabel,
|
|
177
|
+
processStateColor,
|
|
178
|
+
processStateIcon,
|
|
179
|
+
resolveSize,
|
|
180
|
+
setFallbackIconProvider,
|
|
181
|
+
splitTagToken,
|
|
182
|
+
tagActionsFromRecord,
|
|
183
|
+
tagFilterTokens,
|
|
184
|
+
useDensity,
|
|
185
|
+
useDensityValue,
|
|
186
|
+
useHistoryRoute,
|
|
187
|
+
useOpenAPI,
|
|
188
|
+
useOperationById,
|
|
189
|
+
useOperations,
|
|
190
|
+
useSort,
|
|
191
|
+
useTagActions,
|
|
192
|
+
useTagActionsValue,
|
|
193
|
+
useTheme
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type SectionProps = {
|
|
3
|
+
title: ReactNode;
|
|
4
|
+
summary?: ReactNode;
|
|
5
|
+
defaultOpen?: boolean;
|
|
6
|
+
open?: boolean;
|
|
7
|
+
onToggle?: (open: boolean) => void;
|
|
8
|
+
icon?: string;
|
|
9
|
+
tone?: "default" | "danger" | "warning" | "success" | "info";
|
|
10
|
+
className?: string;
|
|
11
|
+
headerClassName?: string;
|
|
12
|
+
bodyClassName?: string;
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
};
|
|
15
|
+
export declare function Section({ title, summary, defaultOpen, open: openProp, onToggle, icon, tone, className, headerClassName, bodyClassName, children, }: SectionProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export type DetailEmptyStateProps = {
|
|
17
|
+
icon?: string;
|
|
18
|
+
label: ReactNode;
|
|
19
|
+
description?: ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function DetailEmptyState({ icon, label, description, className }: DetailEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=Section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.d.ts","sourceRoot":"","sources":["../../src/layout/Section.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAUF,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,OAAO,EACP,WAAmB,EACnB,IAAI,EAAE,QAAQ,EACd,QAAQ,EACR,IAAI,EACJ,IAAgB,EAChB,SAAS,EACT,eAAe,EACf,aAAa,EACb,QAAQ,GACT,EAAE,YAAY,2CAsCd;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,qBAAqB,2CAQ9F"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
import { Icon } from "../data/Icon.js";
|
|
5
|
+
const toneRing = {
|
|
6
|
+
default: "",
|
|
7
|
+
danger: "border-l-2 border-red-500",
|
|
8
|
+
warning: "border-l-2 border-yellow-500",
|
|
9
|
+
success: "border-l-2 border-green-500",
|
|
10
|
+
info: "border-l-2 border-blue-500"
|
|
11
|
+
};
|
|
12
|
+
function Section({
|
|
13
|
+
title,
|
|
14
|
+
summary,
|
|
15
|
+
defaultOpen = false,
|
|
16
|
+
open: openProp,
|
|
17
|
+
onToggle,
|
|
18
|
+
icon,
|
|
19
|
+
tone = "default",
|
|
20
|
+
className,
|
|
21
|
+
headerClassName,
|
|
22
|
+
bodyClassName,
|
|
23
|
+
children
|
|
24
|
+
}) {
|
|
25
|
+
const isControlled = openProp !== void 0;
|
|
26
|
+
const [innerOpen, setInnerOpen] = useState(defaultOpen);
|
|
27
|
+
const open = isControlled ? openProp : innerOpen;
|
|
28
|
+
function toggle() {
|
|
29
|
+
const next = !open;
|
|
30
|
+
if (!isControlled) setInnerOpen(next);
|
|
31
|
+
onToggle == null ? void 0 : onToggle(next);
|
|
32
|
+
}
|
|
33
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-md border border-border bg-background", toneRing[tone], className), children: [
|
|
34
|
+
/* @__PURE__ */ jsxs(
|
|
35
|
+
"button",
|
|
36
|
+
{
|
|
37
|
+
type: "button",
|
|
38
|
+
onClick: toggle,
|
|
39
|
+
"aria-expanded": open,
|
|
40
|
+
className: cn(
|
|
41
|
+
"w-full flex items-center gap-2 px-density-3 py-density-2 text-left",
|
|
42
|
+
"hover:bg-accent/50 transition-colors",
|
|
43
|
+
headerClassName
|
|
44
|
+
),
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ jsx(
|
|
47
|
+
Icon,
|
|
48
|
+
{
|
|
49
|
+
name: open ? "codicon:chevron-down" : "codicon:chevron-right",
|
|
50
|
+
className: "text-muted-foreground text-xs"
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
icon && /* @__PURE__ */ jsx(Icon, { name: icon, className: "text-base" }),
|
|
54
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-sm flex-1 truncate", children: title }),
|
|
55
|
+
summary && /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: summary })
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
),
|
|
59
|
+
open && /* @__PURE__ */ jsx("div", { className: cn("px-density-3 py-density-2 border-t border-border", bodyClassName), children })
|
|
60
|
+
] });
|
|
61
|
+
}
|
|
62
|
+
function DetailEmptyState({ icon, label, description, className }) {
|
|
63
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("p-density-6 text-center text-muted-foreground", className), children: [
|
|
64
|
+
icon && /* @__PURE__ */ jsx(Icon, { name: icon, className: "text-3xl mb-density-2" }),
|
|
65
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm", children: label }),
|
|
66
|
+
description && /* @__PURE__ */ jsx("p", { className: "text-xs mt-density-1 opacity-70", children: description })
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
DetailEmptyState,
|
|
71
|
+
Section
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=Section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.js","sources":["../../src/layout/Section.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\n\nexport type SectionProps = {\n title: ReactNode;\n summary?: ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onToggle?: (open: boolean) => void;\n icon?: string;\n tone?: \"default\" | \"danger\" | \"warning\" | \"success\" | \"info\";\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n children: ReactNode;\n};\n\nconst toneRing: Record<NonNullable<SectionProps[\"tone\"]>, string> = {\n default: \"\",\n danger: \"border-l-2 border-red-500\",\n warning: \"border-l-2 border-yellow-500\",\n success: \"border-l-2 border-green-500\",\n info: \"border-l-2 border-blue-500\",\n};\n\nexport function Section({\n title,\n summary,\n defaultOpen = false,\n open: openProp,\n onToggle,\n icon,\n tone = \"default\",\n className,\n headerClassName,\n bodyClassName,\n children,\n}: SectionProps) {\n const isControlled = openProp !== undefined;\n const [innerOpen, setInnerOpen] = useState(defaultOpen);\n const open = isControlled ? openProp : innerOpen;\n\n function toggle() {\n const next = !open;\n if (!isControlled) setInnerOpen(next);\n onToggle?.(next);\n }\n\n return (\n <div className={cn(\"rounded-md border border-border bg-background\", toneRing[tone], className)}>\n <button\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n className={cn(\n \"w-full flex items-center gap-2 px-density-3 py-density-2 text-left\",\n \"hover:bg-accent/50 transition-colors\",\n headerClassName,\n )}\n >\n <Icon\n name={open ? \"codicon:chevron-down\" : \"codicon:chevron-right\"}\n className=\"text-muted-foreground text-xs\"\n />\n {icon && <Icon name={icon} className=\"text-base\" />}\n <span className=\"font-medium text-sm flex-1 truncate\">{title}</span>\n {summary && <span className=\"text-xs text-muted-foreground\">{summary}</span>}\n </button>\n {open && (\n <div className={cn(\"px-density-3 py-density-2 border-t border-border\", bodyClassName)}>\n {children}\n </div>\n )}\n </div>\n );\n}\n\nexport type DetailEmptyStateProps = {\n icon?: string;\n label: ReactNode;\n description?: ReactNode;\n className?: string;\n};\n\nexport function DetailEmptyState({ icon, label, description, className }: DetailEmptyStateProps) {\n return (\n <div className={cn(\"p-density-6 text-center text-muted-foreground\", className)}>\n {icon && <Icon name={icon} className=\"text-3xl mb-density-2\" />}\n <p className=\"text-sm\">{label}</p>\n {description && <p className=\"text-xs mt-density-1 opacity-70\">{description}</p>}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAkBA,MAAM,WAA8D;AAAA,EAClE,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AACR;AAEO,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiB;AACf,QAAM,eAAe,aAAa;AAClC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,WAAW;AACtD,QAAM,OAAO,eAAe,WAAW;AAEvC,WAAS,SAAS;AAChB,UAAM,OAAO,CAAC;AACd,QAAI,CAAC,aAAc,cAAa,IAAI;AACpC,yCAAW;AAAA,EACb;AAEA,SACE,qBAAC,SAAI,WAAW,GAAG,iDAAiD,SAAS,IAAI,GAAG,SAAS,GAC3F,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACT,iBAAe;AAAA,QACf,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM,OAAO,yBAAyB;AAAA,cACtC,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEX,QAAQ,oBAAC,MAAA,EAAK,MAAM,MAAM,WAAU,aAAY;AAAA,UACjD,oBAAC,QAAA,EAAK,WAAU,uCAAuC,UAAA,OAAM;AAAA,UAC5D,WAAW,oBAAC,QAAA,EAAK,WAAU,iCAAiC,UAAA,QAAA,CAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEtE,4BACE,OAAA,EAAI,WAAW,GAAG,oDAAoD,aAAa,GACjF,SAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;AASO,SAAS,iBAAiB,EAAE,MAAM,OAAO,aAAa,aAAoC;AAC/F,8BACG,OAAA,EAAI,WAAW,GAAG,iDAAiD,SAAS,GAC1E,UAAA;AAAA,IAAA,QAAQ,oBAAC,MAAA,EAAK,MAAM,MAAM,WAAU,yBAAwB;AAAA,IAC7D,oBAAC,KAAA,EAAE,WAAU,WAAW,UAAA,OAAM;AAAA,IAC7B,eAAe,oBAAC,KAAA,EAAE,WAAU,mCAAmC,UAAA,YAAA,CAAY;AAAA,EAAA,GAC9E;AAEJ;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type SplitPaneProps = {
|
|
3
|
+
left: ReactNode;
|
|
4
|
+
right: ReactNode;
|
|
5
|
+
defaultSplit?: number;
|
|
6
|
+
minLeft?: number;
|
|
7
|
+
minRight?: number;
|
|
8
|
+
leftClass?: string;
|
|
9
|
+
rightClass?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function SplitPane({ left, right, defaultSplit, minLeft, minRight, leftClass, rightClass, className, }: SplitPaneProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=SplitPane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitPane.d.ts","sourceRoot":"","sources":["../../src/layout/SplitPane.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,YAAiB,EACjB,OAAY,EACZ,QAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,GACV,EAAE,cAAc,2CAuDhB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useCallback } from "react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
function SplitPane({
|
|
5
|
+
left,
|
|
6
|
+
right,
|
|
7
|
+
defaultSplit = 50,
|
|
8
|
+
minLeft = 20,
|
|
9
|
+
minRight = 20,
|
|
10
|
+
leftClass,
|
|
11
|
+
rightClass,
|
|
12
|
+
className
|
|
13
|
+
}) {
|
|
14
|
+
const [split, setSplit] = useState(defaultSplit);
|
|
15
|
+
const dragging = useRef(false);
|
|
16
|
+
const container = useRef(null);
|
|
17
|
+
const onMouseDown = useCallback(
|
|
18
|
+
(e) => {
|
|
19
|
+
e.preventDefault();
|
|
20
|
+
dragging.current = true;
|
|
21
|
+
const onMove = (ev) => {
|
|
22
|
+
if (!dragging.current || !container.current) return;
|
|
23
|
+
const rect = container.current.getBoundingClientRect();
|
|
24
|
+
const pct = (ev.clientX - rect.left) / rect.width * 100;
|
|
25
|
+
setSplit(Math.max(minLeft, Math.min(100 - minRight, pct)));
|
|
26
|
+
};
|
|
27
|
+
const onUp = () => {
|
|
28
|
+
dragging.current = false;
|
|
29
|
+
document.removeEventListener("mousemove", onMove);
|
|
30
|
+
document.removeEventListener("mouseup", onUp);
|
|
31
|
+
document.body.style.cursor = "";
|
|
32
|
+
document.body.style.userSelect = "";
|
|
33
|
+
};
|
|
34
|
+
document.addEventListener("mousemove", onMove);
|
|
35
|
+
document.addEventListener("mouseup", onUp);
|
|
36
|
+
document.body.style.cursor = "col-resize";
|
|
37
|
+
document.body.style.userSelect = "none";
|
|
38
|
+
},
|
|
39
|
+
[minLeft, minRight]
|
|
40
|
+
);
|
|
41
|
+
return /* @__PURE__ */ jsxs("div", { ref: container, className: cn("flex flex-1 overflow-hidden min-h-0", className), children: [
|
|
42
|
+
/* @__PURE__ */ jsx(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
style: { width: `${split}%` },
|
|
46
|
+
className: cn("overflow-y-auto bg-background min-h-0", leftClass),
|
|
47
|
+
children: left
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
/* @__PURE__ */ jsx(
|
|
51
|
+
"div",
|
|
52
|
+
{
|
|
53
|
+
role: "separator",
|
|
54
|
+
"aria-orientation": "vertical",
|
|
55
|
+
className: "w-1 bg-border hover:bg-primary cursor-col-resize shrink-0 transition-colors",
|
|
56
|
+
onMouseDown
|
|
57
|
+
}
|
|
58
|
+
),
|
|
59
|
+
/* @__PURE__ */ jsx(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
style: { width: `${100 - split}%` },
|
|
63
|
+
className: cn("overflow-hidden bg-background min-h-0", rightClass),
|
|
64
|
+
children: right
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
SplitPane
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=SplitPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitPane.js","sources":["../../src/layout/SplitPane.tsx"],"sourcesContent":["import { useCallback, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport type SplitPaneProps = {\n left: ReactNode;\n right: ReactNode;\n defaultSplit?: number;\n minLeft?: number;\n minRight?: number;\n leftClass?: string;\n rightClass?: string;\n className?: string;\n};\n\nexport function SplitPane({\n left,\n right,\n defaultSplit = 50,\n minLeft = 20,\n minRight = 20,\n leftClass,\n rightClass,\n className,\n}: SplitPaneProps) {\n const [split, setSplit] = useState(defaultSplit);\n const dragging = useRef(false);\n const container = useRef<HTMLDivElement>(null);\n\n const onMouseDown = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n dragging.current = true;\n\n const onMove = (ev: MouseEvent) => {\n if (!dragging.current || !container.current) return;\n const rect = container.current.getBoundingClientRect();\n const pct = ((ev.clientX - rect.left) / rect.width) * 100;\n setSplit(Math.max(minLeft, Math.min(100 - minRight, pct)));\n };\n\n const onUp = () => {\n dragging.current = false;\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n },\n [minLeft, minRight],\n );\n\n return (\n <div ref={container} className={cn(\"flex flex-1 overflow-hidden min-h-0\", className)}>\n <div\n style={{ width: `${split}%` }}\n className={cn(\"overflow-y-auto bg-background min-h-0\", leftClass)}\n >\n {left}\n </div>\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n className=\"w-1 bg-border hover:bg-primary cursor-col-resize shrink-0 transition-colors\"\n onMouseDown={onMouseDown}\n />\n <div\n style={{ width: `${100 - split}%` }}\n className={cn(\"overflow-hidden bg-background min-h-0\", rightClass)}\n >\n {right}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAcO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,GAAmB;AACjB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,YAAY;AAC/C,QAAM,WAAW,OAAO,KAAK;AAC7B,QAAM,YAAY,OAAuB,IAAI;AAE7C,QAAM,cAAc;AAAA,IAClB,CAAC,MAAwB;AACvB,QAAE,eAAA;AACF,eAAS,UAAU;AAEnB,YAAM,SAAS,CAAC,OAAmB;AACjC,YAAI,CAAC,SAAS,WAAW,CAAC,UAAU,QAAS;AAC7C,cAAM,OAAO,UAAU,QAAQ,sBAAA;AAC/B,cAAM,OAAQ,GAAG,UAAU,KAAK,QAAQ,KAAK,QAAS;AACtD,iBAAS,KAAK,IAAI,SAAS,KAAK,IAAI,MAAM,UAAU,GAAG,CAAC,CAAC;AAAA,MAC3D;AAEA,YAAM,OAAO,MAAM;AACjB,iBAAS,UAAU;AACnB,iBAAS,oBAAoB,aAAa,MAAM;AAChD,iBAAS,oBAAoB,WAAW,IAAI;AAC5C,iBAAS,KAAK,MAAM,SAAS;AAC7B,iBAAS,KAAK,MAAM,aAAa;AAAA,MACnC;AAEA,eAAS,iBAAiB,aAAa,MAAM;AAC7C,eAAS,iBAAiB,WAAW,IAAI;AACzC,eAAS,KAAK,MAAM,SAAS;AAC7B,eAAS,KAAK,MAAM,aAAa;AAAA,IACnC;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EAAA;AAGpB,SACE,qBAAC,SAAI,KAAK,WAAW,WAAW,GAAG,uCAAuC,SAAS,GACjF,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO,EAAE,OAAO,GAAG,KAAK,IAAA;AAAA,QACxB,WAAW,GAAG,yCAAyC,SAAS;AAAA,QAE/D,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,oBAAiB;AAAA,QACjB,WAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO,EAAE,OAAO,GAAG,MAAM,KAAK,IAAA;AAAA,QAC9B,WAAW,GAAG,yCAAyC,UAAU;AAAA,QAEhE,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/lib/palette.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAiB3C,CAAC;AAGF,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOzC;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const AVATAR_PALETTE = [
|
|
2
|
+
"bg-rose-100 text-rose-700",
|
|
3
|
+
"bg-pink-100 text-pink-700",
|
|
4
|
+
"bg-fuchsia-100 text-fuchsia-700",
|
|
5
|
+
"bg-purple-100 text-purple-700",
|
|
6
|
+
"bg-violet-100 text-violet-700",
|
|
7
|
+
"bg-indigo-100 text-indigo-700",
|
|
8
|
+
"bg-blue-100 text-blue-700",
|
|
9
|
+
"bg-sky-100 text-sky-700",
|
|
10
|
+
"bg-cyan-100 text-cyan-700",
|
|
11
|
+
"bg-teal-100 text-teal-700",
|
|
12
|
+
"bg-emerald-100 text-emerald-700",
|
|
13
|
+
"bg-green-100 text-green-700",
|
|
14
|
+
"bg-lime-100 text-lime-800",
|
|
15
|
+
"bg-amber-100 text-amber-800",
|
|
16
|
+
"bg-orange-100 text-orange-700",
|
|
17
|
+
"bg-red-100 text-red-700"
|
|
18
|
+
];
|
|
19
|
+
function fnv1a32(s) {
|
|
20
|
+
let h = 2166136261;
|
|
21
|
+
for (let i = 0; i < s.length; i++) {
|
|
22
|
+
h ^= s.charCodeAt(i);
|
|
23
|
+
h = Math.imul(h, 16777619);
|
|
24
|
+
}
|
|
25
|
+
return h >>> 0;
|
|
26
|
+
}
|
|
27
|
+
function paletteClass(key) {
|
|
28
|
+
return AVATAR_PALETTE[fnv1a32(key) % AVATAR_PALETTE.length];
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
AVATAR_PALETTE,
|
|
32
|
+
fnv1a32,
|
|
33
|
+
paletteClass
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.js","sources":["../../src/lib/palette.ts"],"sourcesContent":["// 16 Tailwind bg/text pairs chosen for WCAG AA contrast at small avatar sizes.\n// Add/remove entries carefully — the index is hash-derived and must stay stable.\nexport const AVATAR_PALETTE: readonly string[] = [\n \"bg-rose-100 text-rose-700\",\n \"bg-pink-100 text-pink-700\",\n \"bg-fuchsia-100 text-fuchsia-700\",\n \"bg-purple-100 text-purple-700\",\n \"bg-violet-100 text-violet-700\",\n \"bg-indigo-100 text-indigo-700\",\n \"bg-blue-100 text-blue-700\",\n \"bg-sky-100 text-sky-700\",\n \"bg-cyan-100 text-cyan-700\",\n \"bg-teal-100 text-teal-700\",\n \"bg-emerald-100 text-emerald-700\",\n \"bg-green-100 text-green-700\",\n \"bg-lime-100 text-lime-800\",\n \"bg-amber-100 text-amber-800\",\n \"bg-orange-100 text-orange-700\",\n \"bg-red-100 text-red-700\",\n];\n\n// Deterministic 32-bit FNV-1a hash. Same input → same output across sessions.\nexport function fnv1a32(s: string): number {\n let h = 0x811c9dc5;\n for (let i = 0; i < s.length; i++) {\n h ^= s.charCodeAt(i);\n h = Math.imul(h, 0x01000193);\n }\n return h >>> 0;\n}\n\nexport function paletteClass(key: string): string {\n return AVATAR_PALETTE[fnv1a32(key) % AVATAR_PALETTE.length]!;\n}\n"],"names":[],"mappings":"AAEO,MAAM,iBAAoC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,SAAS,QAAQ,GAAmB;AACzC,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,SAAK,EAAE,WAAW,CAAC;AACnB,QAAI,KAAK,KAAK,GAAG,QAAU;AAAA,EAC7B;AACA,SAAO,MAAM;AACf;AAEO,SAAS,aAAa,KAAqB;AAChD,SAAO,eAAe,QAAQ,GAAG,IAAI,eAAe,MAAM;AAC5D;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Density } from '../hooks/use-density';
|
|
2
|
+
export type SizeToken = "xs" | "sm" | "md" | "lg" | "xl";
|
|
3
|
+
export declare const SIZE_TOKENS: SizeToken[];
|
|
4
|
+
export declare function resolveSize(size: SizeToken, density?: Density): number;
|
|
5
|
+
export declare function readDensityFromDom(): Density;
|
|
6
|
+
//# sourceMappingURL=size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/lib/size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD,eAAO,MAAM,WAAW,EAAE,SAAS,EAAmC,CAAC;AAQvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,OAAuB,GAAG,MAAM,CAErF;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C"}
|
package/dist/lib/size.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const SIZE_TOKENS = ["xs", "sm", "md", "lg", "xl"];
|
|
2
|
+
const SIZE_SCALE = {
|
|
3
|
+
compact: { xs: 14, sm: 18, md: 24, lg: 36, xl: 48 },
|
|
4
|
+
comfortable: { xs: 16, sm: 20, md: 28, lg: 40, xl: 56 },
|
|
5
|
+
spacious: { xs: 20, sm: 24, md: 32, lg: 48, xl: 64 }
|
|
6
|
+
};
|
|
7
|
+
function resolveSize(size, density = "comfortable") {
|
|
8
|
+
return SIZE_SCALE[density][size];
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
SIZE_TOKENS,
|
|
12
|
+
resolveSize
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size.js","sources":["../../src/lib/size.ts"],"sourcesContent":["import type { Density } from \"../hooks/use-density\";\n\nexport type SizeToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport const SIZE_TOKENS: SizeToken[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"];\n\nconst SIZE_SCALE: Record<Density, Record<SizeToken, number>> = {\n compact: { xs: 14, sm: 18, md: 24, lg: 36, xl: 48 },\n comfortable: { xs: 16, sm: 20, md: 28, lg: 40, xl: 56 },\n spacious: { xs: 20, sm: 24, md: 32, lg: 48, xl: 64 },\n};\n\nexport function resolveSize(size: SizeToken, density: Density = \"comfortable\"): number {\n return SIZE_SCALE[density][size];\n}\n\nexport function readDensityFromDom(): Density {\n if (typeof document === \"undefined\") return \"comfortable\";\n const raw = document.documentElement.getAttribute(\"data-density\");\n return raw === \"compact\" || raw === \"spacious\" ? raw : \"comfortable\";\n}\n"],"names":[],"mappings":"AAIO,MAAM,cAA2B,CAAC,MAAM,MAAM,MAAM,MAAM,IAAI;AAErE,MAAM,aAAyD;AAAA,EAC7D,SAAS,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAA;AAAA,EAC/C,aAAa,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAA;AAAA,EACnD,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAA;AAClD;AAEO,SAAS,YAAY,MAAiB,UAAmB,eAAuB;AACrF,SAAO,WAAW,OAAO,EAAE,IAAI;AACjC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"names":[],"mappings":";;AAGO,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type HoverCardPlacement = "top" | "bottom" | "left" | "right";
|
|
3
|
+
export type HoverCardProps = {
|
|
4
|
+
trigger: ReactNode;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
placement?: HoverCardPlacement;
|
|
7
|
+
delay?: number;
|
|
8
|
+
arrow?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
cardClassName?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function HoverCard({ trigger, children, placement, delay, arrow, className, cardClassName, }: HoverCardProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=HoverCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HoverCard.d.ts","sourceRoot":"","sources":["../../src/overlay/HoverCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIrF,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAUF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,QAAQ,EACR,SAAiB,EACjB,KAAS,EACT,KAAY,EACZ,SAAS,EACT,aAAa,GACd,EAAE,cAAc,2CA8HhB"}
|