@flanksource/clicky-ui 0.2.14 → 0.2.16
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/chat.cjs +20 -0
- package/dist/chat.cjs.map +1 -0
- package/dist/chat.d.ts +2 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +20 -0
- package/dist/chat.js.map +1 -0
- package/dist/components/Combobox.cjs +19 -9
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +10 -0
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +19 -9
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +6 -1
- package/dist/components/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker.d.ts +11 -3
- package/dist/components/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker.js +6 -1
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/Field.cjs +33 -0
- package/dist/components/Field.cjs.map +1 -0
- package/dist/components/Field.d.ts +27 -0
- package/dist/components/Field.d.ts.map +1 -0
- package/dist/components/Field.js +33 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/FilterBar.cjs +49 -55
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +2 -2
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +44 -50
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/FormatOptionsDropdown.cjs +2 -18
- package/dist/components/FormatOptionsDropdown.cjs.map +1 -1
- package/dist/components/FormatOptionsDropdown.d.ts +1 -17
- package/dist/components/FormatOptionsDropdown.d.ts.map +1 -1
- package/dist/components/FormatOptionsDropdown.js +1 -17
- package/dist/components/FormatOptionsDropdown.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +128 -12
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +131 -15
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MultiSelect.cjs +2 -1
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts +5 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +2 -1
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +0 -1
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +0 -2
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +1 -2
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/TreePickerField.cjs +137 -0
- package/dist/components/TreePickerField.cjs.map +1 -0
- package/dist/components/TreePickerField.d.ts +30 -0
- package/dist/components/TreePickerField.d.ts.map +1 -0
- package/dist/components/TreePickerField.js +137 -0
- package/dist/components/TreePickerField.js.map +1 -0
- package/dist/components/WorkloadPicker.cjs +6 -81
- package/dist/components/WorkloadPicker.cjs.map +1 -1
- package/dist/components/WorkloadPicker.d.ts +1 -20
- package/dist/components/WorkloadPicker.d.ts.map +1 -1
- package/dist/components/WorkloadPicker.js +3 -78
- package/dist/components/WorkloadPicker.js.map +1 -1
- package/dist/components/button-variants.cjs +30 -0
- package/dist/components/button-variants.cjs.map +1 -0
- package/dist/components/button-variants.d.ts +5 -0
- package/dist/components/button-variants.d.ts.map +1 -0
- package/dist/components/button-variants.js +30 -0
- package/dist/components/button-variants.js.map +1 -0
- package/dist/components/button.cjs +11 -82
- package/dist/components/button.cjs.map +1 -1
- package/dist/components/button.d.ts +1 -5
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +5 -76
- package/dist/components/button.js.map +1 -1
- package/dist/components/filter-bar-utils.cjs +37 -0
- package/dist/components/filter-bar-utils.cjs.map +1 -0
- package/dist/components/filter-bar-utils.d.ts +4 -0
- package/dist/components/filter-bar-utils.d.ts.map +1 -0
- package/dist/components/filter-bar-utils.js +37 -0
- package/dist/components/filter-bar-utils.js.map +1 -0
- package/dist/components/format-options.cjs +20 -0
- package/dist/components/format-options.cjs.map +1 -0
- package/dist/components/format-options.d.ts +18 -0
- package/dist/components/format-options.d.ts.map +1 -0
- package/dist/components/format-options.js +20 -0
- package/dist/components/format-options.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +13 -17
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -2
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +3 -7
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +97 -232
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +51 -6
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +89 -224
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +149 -0
- package/dist/components/json-schema-form-object.cjs.map +1 -0
- package/dist/components/json-schema-form-object.d.ts +10 -0
- package/dist/components/json-schema-form-object.d.ts.map +1 -0
- package/dist/components/json-schema-form-object.js +149 -0
- package/dist/components/json-schema-form-object.js.map +1 -0
- package/dist/components/json-schema-form-preferences.cjs +41 -0
- package/dist/components/json-schema-form-preferences.cjs.map +1 -0
- package/dist/components/json-schema-form-preferences.d.ts +10 -0
- package/dist/components/json-schema-form-preferences.d.ts.map +1 -0
- package/dist/components/json-schema-form-preferences.js +41 -0
- package/dist/components/json-schema-form-preferences.js.map +1 -0
- package/dist/components/json-schema-form-render.cjs +43 -72
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts +5 -33
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +41 -70
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +9 -1
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +9 -1
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +59 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +96 -0
- package/dist/components/json-schema-form-utils.cjs.map +1 -0
- package/dist/components/json-schema-form-utils.d.ts +17 -0
- package/dist/components/json-schema-form-utils.d.ts.map +1 -0
- package/dist/components/json-schema-form-utils.js +96 -0
- package/dist/components/json-schema-form-utils.js.map +1 -0
- package/dist/components/loading.cjs +109 -0
- package/dist/components/loading.cjs.map +1 -0
- package/dist/components/loading.d.ts +29 -0
- package/dist/components/loading.d.ts.map +1 -0
- package/dist/components/loading.js +109 -0
- package/dist/components/loading.js.map +1 -0
- package/dist/components/use-form.cjs +27 -0
- package/dist/components/use-form.cjs.map +1 -0
- package/dist/components/use-form.d.ts +30 -0
- package/dist/components/use-form.d.ts.map +1 -0
- package/dist/components/use-form.js +27 -0
- package/dist/components/use-form.js.map +1 -0
- package/dist/components/workload-picker-utils.cjs +88 -0
- package/dist/components/workload-picker-utils.cjs.map +1 -0
- package/dist/components/workload-picker-utils.d.ts +34 -0
- package/dist/components/workload-picker-utils.d.ts.map +1 -0
- package/dist/components/workload-picker-utils.js +88 -0
- package/dist/components/workload-picker-utils.js.map +1 -0
- package/dist/components.cjs +25 -6
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +14 -4
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +24 -5
- package/dist/components.js.map +1 -1
- package/dist/data/Badge.cjs +11 -91
- package/dist/data/Badge.cjs.map +1 -1
- package/dist/data/Badge.d.ts +1 -5
- package/dist/data/Badge.d.ts.map +1 -1
- package/dist/data/Badge.js +11 -91
- package/dist/data/Badge.js.map +1 -1
- package/dist/data/Clicky.cjs +4 -3
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +4 -3
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/DataTable.cjs +161 -156
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +25 -4
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +140 -135
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FilterPill.cjs +3 -0
- package/dist/data/FilterPill.cjs.map +1 -1
- package/dist/data/FilterPill.d.ts.map +1 -1
- package/dist/data/FilterPill.js +3 -0
- package/dist/data/FilterPill.js.map +1 -1
- package/dist/data/Icon.cjs +7 -7
- package/dist/data/Icon.cjs.map +1 -1
- package/dist/data/Icon.js +7 -7
- package/dist/data/Icon.js.map +1 -1
- package/dist/data/LogDetails.cjs +5 -14
- package/dist/data/LogDetails.cjs.map +1 -1
- package/dist/data/LogDetails.d.ts +8 -4
- package/dist/data/LogDetails.d.ts.map +1 -1
- package/dist/data/LogDetails.js +4 -13
- package/dist/data/LogDetails.js.map +1 -1
- package/dist/data/LogsTable.cjs +6 -165
- package/dist/data/LogsTable.cjs.map +1 -1
- package/dist/data/LogsTable.d.ts +2 -15
- package/dist/data/LogsTable.d.ts.map +1 -1
- package/dist/data/LogsTable.js +6 -165
- package/dist/data/LogsTable.js.map +1 -1
- package/dist/data/TimeseriesPanel.axes.cjs.map +1 -1
- package/dist/data/TimeseriesPanel.axes.js.map +1 -1
- package/dist/data/TreeNode.cjs +13 -7
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +13 -7
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/badge-variants.cjs +85 -0
- package/dist/data/badge-variants.cjs.map +1 -0
- package/dist/data/badge-variants.d.ts +6 -0
- package/dist/data/badge-variants.d.ts.map +1 -0
- package/dist/data/badge-variants.js +85 -0
- package/dist/data/badge-variants.js.map +1 -0
- package/dist/data/cache-browser/CacheBrowser.cjs +59 -0
- package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -0
- package/dist/data/cache-browser/CacheBrowser.d.ts +26 -0
- package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheBrowser.js +59 -0
- package/dist/data/cache-browser/CacheBrowser.js.map +1 -0
- package/dist/data/cache-browser/CacheDetailPanel.cjs +193 -0
- package/dist/data/cache-browser/CacheDetailPanel.cjs.map +1 -0
- package/dist/data/cache-browser/CacheDetailPanel.d.ts +20 -0
- package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheDetailPanel.js +193 -0
- package/dist/data/cache-browser/CacheDetailPanel.js.map +1 -0
- package/dist/data/cache-browser/CacheStatsOverview.cjs +126 -0
- package/dist/data/cache-browser/CacheStatsOverview.cjs.map +1 -0
- package/dist/data/cache-browser/CacheStatsOverview.d.ts +17 -0
- package/dist/data/cache-browser/CacheStatsOverview.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheStatsOverview.js +126 -0
- package/dist/data/cache-browser/CacheStatsOverview.js.map +1 -0
- package/dist/data/cache-browser/CacheTree.cjs +189 -0
- package/dist/data/cache-browser/CacheTree.cjs.map +1 -0
- package/dist/data/cache-browser/CacheTree.d.ts +27 -0
- package/dist/data/cache-browser/CacheTree.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheTree.js +189 -0
- package/dist/data/cache-browser/CacheTree.js.map +1 -0
- package/dist/data/cache-browser/CacheValue.cjs +86 -0
- package/dist/data/cache-browser/CacheValue.cjs.map +1 -0
- package/dist/data/cache-browser/CacheValue.d.ts +11 -0
- package/dist/data/cache-browser/CacheValue.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheValue.js +86 -0
- package/dist/data/cache-browser/CacheValue.js.map +1 -0
- package/dist/data/cache-browser/adapter.cjs +52 -0
- package/dist/data/cache-browser/adapter.cjs.map +1 -0
- package/dist/data/cache-browser/adapter.d.ts +48 -0
- package/dist/data/cache-browser/adapter.d.ts.map +1 -0
- package/dist/data/cache-browser/adapter.js +52 -0
- package/dist/data/cache-browser/adapter.js.map +1 -0
- package/dist/data/cache-browser/api.cjs +42 -0
- package/dist/data/cache-browser/api.cjs.map +1 -0
- package/dist/data/cache-browser/api.d.ts +33 -0
- package/dist/data/cache-browser/api.d.ts.map +1 -0
- package/dist/data/cache-browser/api.js +42 -0
- package/dist/data/cache-browser/api.js.map +1 -0
- package/dist/data/cache-browser/index.d.ts +9 -0
- package/dist/data/cache-browser/index.d.ts.map +1 -0
- package/dist/data/cache-browser/types.cjs +7 -0
- package/dist/data/cache-browser/types.cjs.map +1 -0
- package/dist/data/cache-browser/types.d.ts +78 -0
- package/dist/data/cache-browser/types.d.ts.map +1 -0
- package/dist/data/cache-browser/types.js +7 -0
- package/dist/data/cache-browser/types.js.map +1 -0
- package/dist/data/cells/TagList.cjs +4 -101
- package/dist/data/cells/TagList.cjs.map +1 -1
- package/dist/data/cells/TagList.d.ts +1 -49
- package/dist/data/cells/TagList.d.ts.map +1 -1
- package/dist/data/cells/TagList.js +3 -100
- package/dist/data/cells/TagList.js.map +1 -1
- package/dist/data/cells/Timestamp.cjs +3 -192
- package/dist/data/cells/Timestamp.cjs.map +1 -1
- package/dist/data/cells/Timestamp.d.ts +1 -50
- package/dist/data/cells/Timestamp.d.ts.map +1 -1
- package/dist/data/cells/Timestamp.js +2 -191
- package/dist/data/cells/Timestamp.js.map +1 -1
- package/dist/data/cells/tag-utils.cjs +103 -0
- package/dist/data/cells/tag-utils.cjs.map +1 -0
- package/dist/data/cells/tag-utils.d.ts +51 -0
- package/dist/data/cells/tag-utils.d.ts.map +1 -0
- package/dist/data/cells/tag-utils.js +103 -0
- package/dist/data/cells/tag-utils.js.map +1 -0
- package/dist/data/cells/timestamp-format.cjs +193 -0
- package/dist/data/cells/timestamp-format.cjs.map +1 -0
- package/dist/data/cells/timestamp-format.d.ts +51 -0
- package/dist/data/cells/timestamp-format.d.ts.map +1 -0
- package/dist/data/cells/timestamp-format.js +193 -0
- package/dist/data/cells/timestamp-format.js.map +1 -0
- package/dist/data/chat/Chat.cjs +48 -0
- package/dist/data/chat/Chat.cjs.map +1 -0
- package/dist/data/chat/Chat.d.ts +26 -0
- package/dist/data/chat/Chat.d.ts.map +1 -0
- package/dist/data/chat/Chat.fixtures.d.ts +6 -0
- package/dist/data/chat/Chat.fixtures.d.ts.map +1 -0
- package/dist/data/chat/Chat.js +48 -0
- package/dist/data/chat/Chat.js.map +1 -0
- package/dist/data/chat/Conversation.cjs +34 -0
- package/dist/data/chat/Conversation.cjs.map +1 -0
- package/dist/data/chat/Conversation.d.ts +11 -0
- package/dist/data/chat/Conversation.d.ts.map +1 -0
- package/dist/data/chat/Conversation.js +34 -0
- package/dist/data/chat/Conversation.js.map +1 -0
- package/dist/data/chat/Message.cjs +44 -0
- package/dist/data/chat/Message.cjs.map +1 -0
- package/dist/data/chat/Message.d.ts +10 -0
- package/dist/data/chat/Message.d.ts.map +1 -0
- package/dist/data/chat/Message.js +44 -0
- package/dist/data/chat/Message.js.map +1 -0
- package/dist/data/chat/PromptInput.cjs +61 -0
- package/dist/data/chat/PromptInput.cjs.map +1 -0
- package/dist/data/chat/PromptInput.d.ts +16 -0
- package/dist/data/chat/PromptInput.d.ts.map +1 -0
- package/dist/data/chat/PromptInput.js +61 -0
- package/dist/data/chat/PromptInput.js.map +1 -0
- package/dist/data/chat/ToolCall.cjs +92 -0
- package/dist/data/chat/ToolCall.cjs.map +1 -0
- package/dist/data/chat/ToolCall.d.ts +14 -0
- package/dist/data/chat/ToolCall.d.ts.map +1 -0
- package/dist/data/chat/ToolCall.js +92 -0
- package/dist/data/chat/ToolCall.js.map +1 -0
- package/dist/data/chat/clickyOperationsToTools.cjs +73 -0
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -0
- package/dist/data/chat/clickyOperationsToTools.d.ts +10 -0
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -0
- package/dist/data/chat/clickyOperationsToTools.js +73 -0
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -0
- package/dist/data/chat/index.d.ts +8 -0
- package/dist/data/chat/index.d.ts.map +1 -0
- package/dist/data/chat/types.cjs +18 -0
- package/dist/data/chat/types.cjs.map +1 -0
- package/dist/data/chat/types.d.ts +41 -0
- package/dist/data/chat/types.d.ts.map +1 -0
- package/dist/data/chat/types.js +18 -0
- package/dist/data/chat/types.js.map +1 -0
- package/dist/data/data-table-utils.cjs +55 -0
- package/dist/data/data-table-utils.cjs.map +1 -0
- package/dist/data/data-table-utils.d.ts +24 -0
- package/dist/data/data-table-utils.d.ts.map +1 -0
- package/dist/data/data-table-utils.js +55 -0
- package/dist/data/data-table-utils.js.map +1 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +2 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js +3 -2
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.cjs +3 -22
- package/dist/data/diagnostics/GoroutineCard.cjs.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.d.ts +0 -2
- package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.js +2 -21
- package/dist/data/diagnostics/GoroutineCard.js.map +1 -1
- package/dist/data/diagnostics/ThreadCard.cjs +3 -38
- package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
- package/dist/data/diagnostics/ThreadCard.d.ts +0 -2
- package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
- package/dist/data/diagnostics/ThreadCard.js +2 -37
- package/dist/data/diagnostics/ThreadCard.js.map +1 -1
- package/dist/data/diagnostics/state-styles.cjs +59 -0
- package/dist/data/diagnostics/state-styles.cjs.map +1 -0
- package/dist/data/diagnostics/state-styles.d.ts +5 -0
- package/dist/data/diagnostics/state-styles.d.ts.map +1 -0
- package/dist/data/diagnostics/state-styles.js +59 -0
- package/dist/data/diagnostics/state-styles.js.map +1 -0
- package/dist/data/logs-normalize.cjs +166 -0
- package/dist/data/logs-normalize.cjs.map +1 -0
- package/dist/data/logs-normalize.d.ts +16 -0
- package/dist/data/logs-normalize.d.ts.map +1 -0
- package/dist/data/logs-normalize.js +166 -0
- package/dist/data/logs-normalize.js.map +1 -0
- package/dist/data/task-status.cjs +19 -19
- package/dist/data/task-status.cjs.map +1 -1
- package/dist/data/task-status.js +19 -19
- package/dist/data/task-status.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +43 -18
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +11 -5
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +30 -5
- package/dist/data.js.map +1 -1
- package/dist/hooks/density-provider.cjs +38 -0
- package/dist/hooks/density-provider.cjs.map +1 -0
- package/dist/hooks/density-provider.d.ts +20 -0
- package/dist/hooks/density-provider.d.ts.map +1 -0
- package/dist/hooks/density-provider.js +38 -0
- package/dist/hooks/density-provider.js.map +1 -0
- package/dist/hooks/theme-provider.cjs +43 -0
- package/dist/hooks/theme-provider.cjs.map +1 -0
- package/dist/hooks/theme-provider.d.ts +9 -0
- package/dist/hooks/theme-provider.d.ts.map +1 -0
- package/dist/hooks/theme-provider.js +43 -0
- package/dist/hooks/theme-provider.js.map +1 -0
- package/dist/hooks/use-density.cjs +8 -37
- package/dist/hooks/use-density.cjs.map +1 -1
- package/dist/hooks/use-density.d.ts +5 -20
- package/dist/hooks/use-density.d.ts.map +1 -1
- package/dist/hooks/use-density.js +9 -38
- package/dist/hooks/use-density.js.map +1 -1
- package/dist/hooks/use-theme.cjs +10 -43
- package/dist/hooks/use-theme.cjs.map +1 -1
- package/dist/hooks/use-theme.d.ts +6 -9
- package/dist/hooks/use-theme.d.ts.map +1 -1
- package/dist/hooks/use-theme.js +11 -44
- package/dist/hooks/use-theme.js.map +1 -1
- package/dist/hooks.cjs +5 -2
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +4 -2
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +5 -2
- package/dist/hooks.js.map +1 -1
- package/dist/icons/changeIconAliases.cjs +13 -13
- package/dist/icons/changeIconAliases.cjs.map +1 -1
- package/dist/icons/changeIconAliases.d.ts.map +1 -1
- package/dist/icons/changeIconAliases.js +13 -13
- package/dist/icons/changeIconAliases.js.map +1 -1
- package/dist/index.cjs +78 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +61 -13
- package/dist/index.js.map +1 -1
- package/dist/overlay/DropdownMenu.cjs +2 -0
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts +3 -1
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js +2 -0
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/Modal.cjs +38 -27
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +8 -2
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +38 -27
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/modalStack.cjs +35 -0
- package/dist/overlay/modalStack.cjs.map +1 -0
- package/dist/overlay/modalStack.d.ts +13 -0
- package/dist/overlay/modalStack.d.ts.map +1 -0
- package/dist/overlay/modalStack.js +35 -0
- package/dist/overlay/modalStack.js.map +1 -0
- package/dist/rpc/AcceptPicker.cjs +2 -18
- package/dist/rpc/AcceptPicker.cjs.map +1 -1
- package/dist/rpc/AcceptPicker.d.ts +1 -41
- package/dist/rpc/AcceptPicker.d.ts.map +1 -1
- package/dist/rpc/AcceptPicker.js +2 -18
- package/dist/rpc/AcceptPicker.js.map +1 -1
- package/dist/rpc/CommandOutput.cjs +1 -1
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.js +1 -1
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EndpointList.cjs +1 -1
- package/dist/rpc/EndpointList.cjs.map +1 -1
- package/dist/rpc/EndpointList.js +1 -1
- package/dist/rpc/EndpointList.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +4 -4
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.js +4 -4
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +38 -60
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +3 -3
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +40 -62
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/accept-options.cjs +20 -0
- package/dist/rpc/accept-options.cjs.map +1 -0
- package/dist/rpc/accept-options.d.ts +42 -0
- package/dist/rpc/accept-options.d.ts.map +1 -0
- package/dist/rpc/accept-options.js +20 -0
- package/dist/rpc/accept-options.js.map +1 -0
- package/dist/rpc/classify.cjs +15 -4
- package/dist/rpc/classify.cjs.map +1 -1
- package/dist/rpc/classify.d.ts.map +1 -1
- package/dist/rpc/classify.js +15 -4
- package/dist/rpc/classify.js.map +1 -1
- package/dist/rpc/clickyMetadata.cjs +13 -3
- package/dist/rpc/clickyMetadata.cjs.map +1 -1
- package/dist/rpc/clickyMetadata.d.ts +2 -0
- package/dist/rpc/clickyMetadata.d.ts.map +1 -1
- package/dist/rpc/clickyMetadata.js +14 -4
- package/dist/rpc/clickyMetadata.js.map +1 -1
- package/dist/rpc/formMetadata.cjs +5 -3
- package/dist/rpc/formMetadata.cjs.map +1 -1
- package/dist/rpc/formMetadata.d.ts.map +1 -1
- package/dist/rpc/formMetadata.js +5 -3
- package/dist/rpc/formMetadata.js.map +1 -1
- package/dist/rpc.cjs +3 -2
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +2 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -1
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +16 -1
package/dist/data/Badge.js
CHANGED
|
@@ -1,88 +1,9 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Children, isValidElement } from "react";
|
|
3
|
-
import
|
|
3
|
+
import "class-variance-authority";
|
|
4
4
|
import { cn } from "../lib/utils.js";
|
|
5
|
+
import { badgeVariants } from "./badge-variants.js";
|
|
5
6
|
import { Icon } from "./Icon.js";
|
|
6
|
-
const badgeVariants = cva(
|
|
7
|
-
"inline-flex items-center gap-1 rounded-full border border-transparent font-medium whitespace-nowrap align-middle",
|
|
8
|
-
{
|
|
9
|
-
variants: {
|
|
10
|
-
tone: {
|
|
11
|
-
neutral: "",
|
|
12
|
-
success: "",
|
|
13
|
-
danger: "",
|
|
14
|
-
warning: "",
|
|
15
|
-
info: ""
|
|
16
|
-
},
|
|
17
|
-
variant: {
|
|
18
|
-
soft: "",
|
|
19
|
-
solid: "",
|
|
20
|
-
outline: "bg-transparent"
|
|
21
|
-
},
|
|
22
|
-
size: {
|
|
23
|
-
xxs: "min-h-4 px-1.5 py-0.5 text-[9px] leading-none",
|
|
24
|
-
xs: "min-h-[18px] px-1.5 py-0.5 text-[10px] leading-none",
|
|
25
|
-
sm: "h-4 px-1.5 py-0 text-[10px] leading-none",
|
|
26
|
-
md: "px-2 py-0.5 text-xs",
|
|
27
|
-
lg: "px-2.5 py-1 text-sm"
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
compoundVariants: [
|
|
31
|
-
{ tone: "neutral", variant: "soft", class: "bg-muted text-foreground" },
|
|
32
|
-
{ tone: "neutral", variant: "solid", class: "bg-foreground text-background" },
|
|
33
|
-
{ tone: "neutral", variant: "outline", class: "border-border text-foreground" },
|
|
34
|
-
{
|
|
35
|
-
tone: "success",
|
|
36
|
-
variant: "soft",
|
|
37
|
-
class: "bg-green-100 text-green-800 dark:bg-green-500/20 dark:text-green-300"
|
|
38
|
-
},
|
|
39
|
-
{ tone: "success", variant: "solid", class: "bg-green-500 text-white" },
|
|
40
|
-
{
|
|
41
|
-
tone: "success",
|
|
42
|
-
variant: "outline",
|
|
43
|
-
class: "border-green-500 text-green-700 dark:text-green-400"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
tone: "danger",
|
|
47
|
-
variant: "soft",
|
|
48
|
-
class: "bg-red-100 text-red-800 dark:bg-red-500/20 dark:text-red-300"
|
|
49
|
-
},
|
|
50
|
-
{ tone: "danger", variant: "solid", class: "bg-red-500 text-white" },
|
|
51
|
-
{
|
|
52
|
-
tone: "danger",
|
|
53
|
-
variant: "outline",
|
|
54
|
-
class: "border-red-500 text-red-700 dark:text-red-400"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
tone: "warning",
|
|
58
|
-
variant: "soft",
|
|
59
|
-
class: "bg-yellow-100 text-yellow-800 dark:bg-yellow-500/20 dark:text-yellow-300"
|
|
60
|
-
},
|
|
61
|
-
{ tone: "warning", variant: "solid", class: "bg-yellow-400 text-yellow-950" },
|
|
62
|
-
{
|
|
63
|
-
tone: "warning",
|
|
64
|
-
variant: "outline",
|
|
65
|
-
class: "border-yellow-500 text-yellow-700 dark:text-yellow-400"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
tone: "info",
|
|
69
|
-
variant: "soft",
|
|
70
|
-
class: "bg-blue-100 text-blue-800 dark:bg-blue-500/20 dark:text-blue-300"
|
|
71
|
-
},
|
|
72
|
-
{ tone: "info", variant: "solid", class: "bg-blue-500 text-white" },
|
|
73
|
-
{
|
|
74
|
-
tone: "info",
|
|
75
|
-
variant: "outline",
|
|
76
|
-
class: "border-blue-500 text-blue-700 dark:text-blue-400"
|
|
77
|
-
}
|
|
78
|
-
],
|
|
79
|
-
defaultVariants: {
|
|
80
|
-
tone: "neutral",
|
|
81
|
-
variant: "soft",
|
|
82
|
-
size: "md"
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
);
|
|
86
7
|
const LEGACY_VARIANTS = /* @__PURE__ */ new Set(["soft", "solid", "outline"]);
|
|
87
8
|
const RICH_VARIANTS = /* @__PURE__ */ new Set([
|
|
88
9
|
"status",
|
|
@@ -130,20 +51,20 @@ const RICH_SIZE_CLASSES = {
|
|
|
130
51
|
};
|
|
131
52
|
const STATUS_STYLES = {
|
|
132
53
|
success: {
|
|
133
|
-
soft: "bg-emerald-500/12 text-emerald-700 border-emerald-200",
|
|
134
|
-
outlined: "bg-background text-emerald-700 border-emerald-300"
|
|
54
|
+
soft: "bg-emerald-500/12 text-emerald-700 border-emerald-200 dark:text-emerald-300 dark:border-emerald-500/30",
|
|
55
|
+
outlined: "bg-background text-emerald-700 border-emerald-300 dark:text-emerald-400 dark:border-emerald-500/40"
|
|
135
56
|
},
|
|
136
57
|
error: {
|
|
137
|
-
soft: "bg-rose-500/12 text-rose-700 border-rose-200",
|
|
138
|
-
outlined: "bg-background text-rose-700 border-rose-300"
|
|
58
|
+
soft: "bg-rose-500/12 text-rose-700 border-rose-200 dark:text-rose-300 dark:border-rose-500/30",
|
|
59
|
+
outlined: "bg-background text-rose-700 border-rose-300 dark:text-rose-400 dark:border-rose-500/40"
|
|
139
60
|
},
|
|
140
61
|
warning: {
|
|
141
|
-
soft: "bg-amber-400/15 text-amber-800 border-amber-200",
|
|
142
|
-
outlined: "bg-background text-amber-800 border-amber-300"
|
|
62
|
+
soft: "bg-amber-400/15 text-amber-800 border-amber-200 dark:text-amber-300 dark:border-amber-500/30",
|
|
63
|
+
outlined: "bg-background text-amber-800 border-amber-300 dark:text-amber-400 dark:border-amber-500/40"
|
|
143
64
|
},
|
|
144
65
|
info: {
|
|
145
|
-
soft: "bg-sky-500/12 text-sky-700 border-sky-200",
|
|
146
|
-
outlined: "bg-background text-sky-700 border-sky-300"
|
|
66
|
+
soft: "bg-sky-500/12 text-sky-700 border-sky-200 dark:text-sky-300 dark:border-sky-500/30",
|
|
67
|
+
outlined: "bg-background text-sky-700 border-sky-300 dark:text-sky-400 dark:border-sky-500/40"
|
|
147
68
|
}
|
|
148
69
|
};
|
|
149
70
|
function isLegacyVariant(variant) {
|
|
@@ -673,7 +594,6 @@ function Badge({
|
|
|
673
594
|
});
|
|
674
595
|
}
|
|
675
596
|
export {
|
|
676
|
-
Badge
|
|
677
|
-
badgeVariants
|
|
597
|
+
Badge
|
|
678
598
|
};
|
|
679
599
|
//# sourceMappingURL=Badge.js.map
|
package/dist/data/Badge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.js","sources":["../../src/data/Badge.tsx"],"sourcesContent":["import {\n Children,\n isValidElement,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\n\nexport const badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border border-transparent font-medium whitespace-nowrap align-middle\",\n {\n variants: {\n tone: {\n neutral: \"\",\n success: \"\",\n danger: \"\",\n warning: \"\",\n info: \"\",\n },\n variant: {\n soft: \"\",\n solid: \"\",\n outline: \"bg-transparent\",\n },\n size: {\n xxs: \"min-h-4 px-1.5 py-0.5 text-[9px] leading-none\",\n xs: \"min-h-[18px] px-1.5 py-0.5 text-[10px] leading-none\",\n sm: \"h-4 px-1.5 py-0 text-[10px] leading-none\",\n md: \"px-2 py-0.5 text-xs\",\n lg: \"px-2.5 py-1 text-sm\",\n },\n },\n compoundVariants: [\n { tone: \"neutral\", variant: \"soft\", class: \"bg-muted text-foreground\" },\n { tone: \"neutral\", variant: \"solid\", class: \"bg-foreground text-background\" },\n { tone: \"neutral\", variant: \"outline\", class: \"border-border text-foreground\" },\n\n {\n tone: \"success\",\n variant: \"soft\",\n class: \"bg-green-100 text-green-800 dark:bg-green-500/20 dark:text-green-300\",\n },\n { tone: \"success\", variant: \"solid\", class: \"bg-green-500 text-white\" },\n {\n tone: \"success\",\n variant: \"outline\",\n class: \"border-green-500 text-green-700 dark:text-green-400\",\n },\n\n {\n tone: \"danger\",\n variant: \"soft\",\n class: \"bg-red-100 text-red-800 dark:bg-red-500/20 dark:text-red-300\",\n },\n { tone: \"danger\", variant: \"solid\", class: \"bg-red-500 text-white\" },\n {\n tone: \"danger\",\n variant: \"outline\",\n class: \"border-red-500 text-red-700 dark:text-red-400\",\n },\n\n {\n tone: \"warning\",\n variant: \"soft\",\n class: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-500/20 dark:text-yellow-300\",\n },\n { tone: \"warning\", variant: \"solid\", class: \"bg-yellow-400 text-yellow-950\" },\n {\n tone: \"warning\",\n variant: \"outline\",\n class: \"border-yellow-500 text-yellow-700 dark:text-yellow-400\",\n },\n\n {\n tone: \"info\",\n variant: \"soft\",\n class: \"bg-blue-100 text-blue-800 dark:bg-blue-500/20 dark:text-blue-300\",\n },\n { tone: \"info\", variant: \"solid\", class: \"bg-blue-500 text-white\" },\n {\n tone: \"info\",\n variant: \"outline\",\n class: \"border-blue-500 text-blue-700 dark:text-blue-400\",\n },\n ],\n defaultVariants: {\n tone: \"neutral\",\n variant: \"soft\",\n size: \"md\",\n },\n },\n);\n\ntype LegacyBadgeVariantProps = VariantProps<typeof badgeVariants>;\n\nexport type BadgeTone = NonNullable<LegacyBadgeVariantProps[\"tone\"]>;\nexport type LegacyBadgeVariant = NonNullable<LegacyBadgeVariantProps[\"variant\"]>;\nexport type BadgeSize = NonNullable<LegacyBadgeVariantProps[\"size\"]>;\nexport type BadgeStatus = \"success\" | \"error\" | \"warning\" | \"info\";\nexport type BadgeShape = \"pill\" | \"rounded\" | \"square\";\nexport type BadgeTruncate = \"prefix\" | \"suffix\" | \"arn\" | \"image\" | \"path\" | \"url\" | \"auto\";\nexport type RichBadgeVariant = \"status\" | \"metric\" | \"custom\" | \"outlined\" | \"label\";\nexport type BadgeVariant = LegacyBadgeVariant | RichBadgeVariant;\n\nconst LEGACY_VARIANTS = new Set<LegacyBadgeVariant>([\"soft\", \"solid\", \"outline\"]);\nconst RICH_VARIANTS = new Set<RichBadgeVariant>([\n \"status\",\n \"metric\",\n \"custom\",\n \"outlined\",\n \"label\",\n]);\n\ntype RichSizeClasses = {\n frame: string;\n segment: string;\n text: string;\n icon: string;\n gap: string;\n};\n\nconst RICH_SIZE_CLASSES: Record<BadgeSize, RichSizeClasses> = {\n xxs: {\n frame: \"min-h-4\",\n segment: \"px-1.5 py-0.5\",\n text: \"text-[10px] leading-4\",\n icon: \"h-3 w-3\",\n gap: \"gap-1\",\n },\n xs: {\n frame: \"min-h-[18px]\",\n segment: \"px-2 py-0.5\",\n text: \"text-[11px] leading-4\",\n icon: \"h-3.5 w-3.5\",\n gap: \"gap-1\",\n },\n sm: {\n frame: \"min-h-5\",\n segment: \"px-2 py-0.5\",\n text: \"text-xs leading-4\",\n icon: \"h-3.5 w-3.5\",\n gap: \"gap-1.5\",\n },\n md: {\n frame: \"min-h-6\",\n segment: \"px-2.5 py-1\",\n text: \"text-sm leading-4\",\n icon: \"h-4 w-4\",\n gap: \"gap-1.5\",\n },\n lg: {\n frame: \"min-h-7\",\n segment: \"px-3 py-1.5\",\n text: \"text-base leading-5\",\n icon: \"h-5 w-5\",\n gap: \"gap-2\",\n },\n};\n\ntype ToneStyle = {\n soft: string;\n outlined: string;\n};\n\nconst STATUS_STYLES: Record<BadgeStatus, ToneStyle> = {\n success: {\n soft: \"bg-emerald-500/12 text-emerald-700 border-emerald-200\",\n outlined: \"bg-background text-emerald-700 border-emerald-300\",\n },\n error: {\n soft: \"bg-rose-500/12 text-rose-700 border-rose-200\",\n outlined: \"bg-background text-rose-700 border-rose-300\",\n },\n warning: {\n soft: \"bg-amber-400/15 text-amber-800 border-amber-200\",\n outlined: \"bg-background text-amber-800 border-amber-300\",\n },\n info: {\n soft: \"bg-sky-500/12 text-sky-700 border-sky-200\",\n outlined: \"bg-background text-sky-700 border-sky-300\",\n },\n};\n\nexport type BadgeProps = {\n /** Semantic color tone for legacy badge variants. */\n tone?: BadgeTone;\n /** Visual variant. Legacy variants are `soft`, `solid`, and `outline`; rich variants add structured label/value layouts. */\n variant?: BadgeVariant;\n /** Density-aware badge size. */\n size?: BadgeSize;\n /** Iconify name or imported icon component rendered before the label. */\n icon?: string | StaticIconComponent;\n /** Optional numeric count rendered as badge content. */\n count?: number;\n /** Fallback content for simple badges. */\n children?: ReactNode;\n /** Classes applied to the badge root. */\n className?: string;\n /** Status palette used by `variant=\"status\"`. */\n status?: BadgeStatus;\n /** Label segment for structured label/value badges. */\n label?: ReactNode;\n /** Value segment for structured label/value badges. */\n value?: ReactNode;\n /** Custom background color or utility class. */\n color?: string;\n /** Custom text color or utility class. */\n textColor?: string;\n /** Custom border color or utility class. */\n borderColor?: string;\n /** Corner treatment for the badge frame. */\n shape?: BadgeShape;\n /** When set, renders the badge as a link. */\n href?: string;\n /** Link target for linked badges. */\n target?: AnchorHTMLAttributes<HTMLAnchorElement>[\"target\"];\n /** Link rel attribute for linked badges. */\n rel?: string;\n /** Allows long label/value content to wrap instead of truncating. */\n wrap?: boolean;\n /** Maximum width before truncation; numbers are treated as character count. */\n maxWidth?: string | number;\n /** Truncation strategy for long values. */\n truncate?: BadgeTruncate;\n /** Copies the plain-text badge value when clicked. */\n clickToCopy?: boolean;\n /** Classes applied to the label segment. */\n labelClassName?: string;\n /** Classes applied to the value segment. */\n valueClassName?: string;\n};\n\nfunction isLegacyVariant(variant: BadgeVariant | undefined): variant is LegacyBadgeVariant {\n return variant != null && LEGACY_VARIANTS.has(variant as LegacyBadgeVariant);\n}\n\nfunction isCssColor(value: string | undefined): value is string {\n return value != null && /^(#|rgb|hsl|oklch|var\\(|color\\()/i.test(value);\n}\n\nfunction toneToStatus(tone: BadgeTone | undefined): BadgeStatus | undefined {\n switch (tone) {\n case \"success\":\n return \"success\";\n case \"danger\":\n return \"error\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n return \"info\";\n default:\n return undefined;\n }\n}\n\nfunction getShapeClasses(shape: BadgeShape): string {\n switch (shape) {\n case \"rounded\":\n return \"rounded-md\";\n case \"square\":\n return \"rounded-sm\";\n default:\n return \"rounded-full\";\n }\n}\n\nfunction isRichVariant(variant: BadgeVariant | undefined): variant is RichBadgeVariant {\n return variant != null && RICH_VARIANTS.has(variant as RichBadgeVariant);\n}\n\nfunction applyColorValue(\n value: string | undefined,\n property: \"backgroundColor\" | \"borderColor\" | \"color\",\n style: CSSProperties,\n classes: string[],\n) {\n if (value == null) return;\n if (isCssColor(value)) {\n (style as Record<\"backgroundColor\" | \"borderColor\" | \"color\", string | undefined>)[property] =\n value;\n return;\n }\n classes.push(value);\n}\n\nfunction normalizeMaxWidth(maxWidth: BadgeProps[\"maxWidth\"]): string | undefined {\n if (maxWidth == null) return undefined;\n if (typeof maxWidth === \"number\") {\n return `${Math.max(1, Math.floor(maxWidth))}ch`;\n }\n return maxWidth;\n}\n\nfunction deriveCharacterBudget(maxWidth: BadgeProps[\"maxWidth\"], fallback = 24): number {\n if (typeof maxWidth === \"number\" && Number.isFinite(maxWidth) && maxWidth > 0) {\n return Math.max(4, Math.floor(maxWidth));\n }\n\n if (typeof maxWidth === \"string\") {\n const trimmed = maxWidth.trim();\n const chMatch = trimmed.match(/^(\\d+(?:\\.\\d+)?)ch$/i);\n if (chMatch) return Math.max(4, Math.floor(Number(chMatch[1])));\n const numericMatch = trimmed.match(/^(\\d+(?:\\.\\d+)?)$/);\n if (numericMatch) return Math.max(4, Math.floor(Number(numericMatch[1])));\n }\n\n return fallback;\n}\n\nfunction shouldExposeFullTextTitle({\n maxWidth,\n truncate,\n wrap,\n}: {\n maxWidth: BadgeProps[\"maxWidth\"] | undefined;\n truncate: BadgeProps[\"truncate\"] | undefined;\n wrap: BadgeProps[\"wrap\"] | undefined;\n}) {\n return maxWidth != null || truncate != null || wrap;\n}\n\nfunction toPlainText(node: ReactNode): string | null {\n if (node == null || typeof node === \"boolean\") return null;\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) {\n const pieces = Children.toArray(node).map(toPlainText);\n return pieces.every((piece) => piece != null) ? pieces.join(\"\") : null;\n }\n if (isValidElement(node)) {\n return toPlainText((node.props as { children?: ReactNode }).children);\n }\n return null;\n}\n\nfunction truncateSuffix(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 1) return \"…\";\n return `${text.slice(0, budget - 1)}…`;\n}\n\nfunction truncatePrefix(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 1) return \"…\";\n return `…${text.slice(-(budget - 1))}`;\n}\n\nfunction truncateMiddle(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 3) return truncateSuffix(text, budget);\n const available = budget - 1;\n const head = Math.max(1, Math.ceil(available / 2));\n const tail = Math.max(1, available - head);\n return `${text.slice(0, head)}…${text.slice(-tail)}`;\n}\n\nfunction truncateSegmentStart(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 2) return truncateSuffix(text, budget);\n return `${text.slice(0, budget - 1)}…`;\n}\n\nfunction truncateSegmentEnd(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 2) return truncatePrefix(text, budget);\n return `…${text.slice(-(budget - 1))}`;\n}\n\nfunction summarizeMiddlePathSegment(segment: string | undefined): string {\n if (segment == null || segment.length === 0) return \"…\";\n if (segment.length <= 2) return `${segment}…`;\n return `${segment[0]}…`;\n}\n\nfunction compressStructuredText(\n head: string,\n middle: string | undefined,\n tail: string,\n budget: number,\n separator: string,\n) {\n const pieces = [head];\n if (middle) pieces.push(middle);\n pieces.push(tail);\n\n const preferred = pieces.join(separator);\n if (preferred.length <= budget) return preferred;\n\n const separatorCount = pieces.length - 1;\n const reserved = separator.length * separatorCount + (middle ? middle.length : 0);\n const available = Math.max(4, budget - reserved);\n const headBudget = Math.max(3, Math.min(head.length, Math.floor(available * 0.4)));\n const tailBudget = Math.max(4, available - headBudget);\n const compactHead = truncateSegmentStart(head, headBudget);\n const compactTail = truncateSegmentEnd(tail, tailBudget);\n const compactPieces = [compactHead];\n if (middle) compactPieces.push(middle);\n compactPieces.push(compactTail);\n const compact = compactPieces.join(separator);\n return compact.length <= budget ? compact : truncateMiddle(preferred, budget);\n}\n\nfunction getStructuredBudget(budget: number): number {\n return Math.max(budget, 32);\n}\n\nfunction truncatePath(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n const hasLeadingSlash = text.startsWith(\"/\");\n const segments = text.split(\"/\").filter(Boolean);\n if (segments.length < 2) return truncateMiddle(text, smartBudget);\n const head = `${hasLeadingSlash ? \"/\" : \"\"}${segments[0]}`;\n const tail = segments[segments.length - 1] ?? text;\n const middle =\n segments.length > 2 ? summarizeMiddlePathSegment(segments.slice(1, -1).join(\"/\")) : undefined;\n return compressStructuredText(head, middle, tail, smartBudget, \"/\");\n}\n\nfunction truncateUrl(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n try {\n const url = new URL(text);\n const host = url.host;\n const pathSegments = url.pathname.split(\"/\").filter(Boolean);\n if (pathSegments.length === 0) {\n if (host.length <= smartBudget) return host;\n return truncateMiddle(`${host}${url.search}${url.hash}`, smartBudget);\n }\n if (pathSegments.length === 1) {\n const singlePath = `${host}/${pathSegments[0] ?? host}`;\n if (singlePath.length <= smartBudget) return singlePath;\n const hostOnly = `${host}/…`;\n return hostOnly.length <= smartBudget ? hostOnly : truncateMiddle(singlePath, smartBudget);\n }\n const tail = pathSegments[pathSegments.length - 1] ?? host;\n const firstSegment = pathSegments[0] ?? \"\";\n const summarizedMiddle =\n pathSegments.length > 2\n ? summarizeMiddlePathSegment(pathSegments.slice(1, -1).join(\"/\"))\n : undefined;\n const candidates = [\n [host, firstSegment, summarizedMiddle, tail].filter(Boolean).join(\"/\"),\n `${host}/…/${tail}`,\n `${host}/…`,\n ];\n const candidate = candidates.find((entry) => entry.length <= smartBudget);\n return candidate ?? truncateMiddle(`${host}/${tail}`, smartBudget);\n } catch {\n return truncateMiddle(text, smartBudget);\n }\n}\n\nfunction isLikelyUrl(text: string): boolean {\n return /^[a-z][a-z\\d+\\-.]*:\\/\\//i.test(text) || text.startsWith(\"//\");\n}\n\nfunction isLikelyImage(text: string): boolean {\n if (/\\s/.test(text) || isLikelyUrl(text) || text.startsWith(\"/\")) return false;\n if (!text.includes(\"/\")) return false;\n const tail = text.slice(text.lastIndexOf(\"/\") + 1);\n return tail.includes(\":\") || tail.includes(\"@sha256:\");\n}\n\nfunction splitImageTail(segment: string) {\n const digestIndex = segment.indexOf(\"@sha256:\");\n if (digestIndex >= 0) {\n return {\n name: segment.slice(0, digestIndex),\n suffix: segment.slice(digestIndex),\n };\n }\n\n const tagIndex = segment.lastIndexOf(\":\");\n if (tagIndex > 0) {\n return {\n name: segment.slice(0, tagIndex),\n suffix: segment.slice(tagIndex),\n };\n }\n\n return { name: segment, suffix: \"\" };\n}\n\nfunction truncateImage(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n const segments = text.split(\"/\").filter(Boolean);\n if (segments.length < 2) return truncateMiddle(text, smartBudget);\n const tailSegment = segments[segments.length - 1] ?? text;\n const tailParts = splitImageTail(tailSegment);\n const tailNameOnly = `…${tailParts.name}`;\n\n if (tailNameOnly.length <= smartBudget) return tailNameOnly;\n\n if (segments.length === 2) {\n return compressStructuredText(\n segments[0] ?? text,\n undefined,\n tailParts.name || tailSegment,\n smartBudget,\n \"/\",\n );\n }\n const head = `${segments[0]}/${segments[1] ?? \"\"}`.replace(/\\/$/, \"\");\n const tail =\n tailParts.suffix.length > 0 && smartBudget >= tailSegment.length\n ? tailSegment\n : tailParts.name || tailSegment;\n const middle =\n segments.length > 3\n ? summarizeMiddlePathSegment(segments.slice(2, -1).join(\"/\"))\n : segments.length === 3\n ? \"…\"\n : undefined;\n return compressStructuredText(head, middle, tail, smartBudget, \"/\");\n}\n\nfunction truncateArn(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n const parts = text.split(\":\");\n if (parts.length < 6) return truncateMiddle(text, smartBudget);\n const service = parts[2] ?? parts[1] ?? \"arn\";\n const resource = parts.slice(5).join(\":\");\n const resourceSegments = resource.split(/[/:]/).filter(Boolean);\n const resourceType = resourceSegments.length > 1 ? resourceSegments[0] : undefined;\n const resourceName = resourceSegments[resourceSegments.length - 1] ?? resource;\n const resourceNameTail =\n resourceName.includes(\"-\") && resourceName.split(\"-\").length > 2\n ? resourceName.split(\"-\").slice(-2).join(\"-\")\n : resourceName;\n const typedTail =\n resourceType != null && resourceType !== resourceNameTail\n ? `${resourceType}/${resourceNameTail}`\n : resourceNameTail;\n const preferred = `${service}:…${typedTail}`;\n\n if (preferred.length <= smartBudget) return preferred;\n\n const separatorBudget = 2;\n const resourceBudget = Math.max(\n 4,\n Math.min(resourceNameTail.length, smartBudget - separatorBudget - 2),\n );\n const serviceBudget = Math.max(2, smartBudget - resourceBudget - separatorBudget);\n\n return `${truncateSegmentStart(service, serviceBudget)}:…${truncateMiddle(resourceNameTail, resourceBudget)}`;\n}\n\nfunction detectTruncateStyle(text: string): Exclude<BadgeTruncate, \"auto\"> {\n if (text.startsWith(\"arn:\")) return \"arn\";\n if (isLikelyUrl(text)) return \"url\";\n if (isLikelyImage(text)) return \"image\";\n if (text.includes(\"/\")) return \"path\";\n return \"suffix\";\n}\n\nfunction truncateText(\n text: string,\n truncate: BadgeTruncate,\n maxWidth: BadgeProps[\"maxWidth\"],\n): string {\n const budget = deriveCharacterBudget(maxWidth);\n const mode = truncate === \"auto\" ? detectTruncateStyle(text) : truncate;\n\n switch (mode) {\n case \"prefix\":\n return truncatePrefix(text, budget);\n case \"suffix\":\n return truncateSuffix(text, budget);\n case \"arn\":\n return truncateArn(text, budget);\n case \"image\":\n return truncateImage(text, budget);\n case \"path\":\n return truncatePath(text, budget);\n case \"url\":\n return truncateUrl(text, budget);\n default:\n return truncateSuffix(text, budget);\n }\n}\n\nfunction resolveDisplayNode(\n node: ReactNode,\n truncate: BadgeTruncate | undefined,\n maxWidth: BadgeProps[\"maxWidth\"],\n alwaysTitle = false,\n) {\n const fullText = toPlainText(node);\n if (fullText == null || truncate == null) {\n return {\n content: node,\n fullText,\n title: alwaysTitle ? (fullText ?? undefined) : undefined,\n };\n }\n\n const content = truncateText(fullText, truncate, maxWidth);\n return {\n content,\n fullText,\n title: alwaysTitle || content !== fullText ? fullText : undefined,\n };\n}\n\nfunction copyTextToClipboard(text: string) {\n const clipboard = globalThis.navigator?.clipboard;\n if (clipboard?.writeText == null) return;\n void clipboard.writeText(text).catch(() => undefined);\n}\n\nfunction renderRoot({\n href,\n target,\n rel,\n className,\n style,\n content,\n canCopy,\n copyText,\n}: {\n href: string | undefined;\n target: AnchorHTMLAttributes<HTMLAnchorElement>[\"target\"];\n rel: string | undefined;\n className: string;\n style: CSSProperties | undefined;\n content: ReactNode;\n canCopy: boolean;\n copyText: string | undefined;\n}) {\n if (href != null) {\n return (\n <a\n href={href}\n target={target}\n rel={rel ?? (target === \"_blank\" ? \"noopener noreferrer\" : undefined)}\n className={className}\n style={style}\n >\n {content}\n </a>\n );\n }\n\n if (canCopy && copyText != null) {\n return (\n <button\n type=\"button\"\n className={className}\n style={style}\n onClick={() => copyTextToClipboard(copyText)}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span className={className} style={style}>\n {content}\n </span>\n );\n}\n\nexport function Badge({\n tone,\n variant,\n size = \"md\",\n icon,\n count,\n children,\n className,\n status,\n label,\n value,\n color,\n textColor,\n borderColor,\n shape,\n href,\n target = \"_self\",\n rel,\n wrap = false,\n maxWidth,\n truncate,\n clickToCopy,\n labelClassName,\n valueClassName,\n}: BadgeProps) {\n const richSignals =\n label != null ||\n value != null ||\n status != null ||\n shape != null ||\n href != null ||\n wrap === true ||\n color != null ||\n textColor != null ||\n borderColor != null ||\n labelClassName != null ||\n valueClassName != null;\n const resolvedVariant = variant ?? (richSignals ? \"metric\" : \"soft\");\n const normalizedMaxWidth = normalizeMaxWidth(maxWidth);\n const shouldWrapText = wrap && truncate == null;\n const showFullTextTitle = shouldExposeFullTextTitle({ maxWidth, truncate, wrap });\n const textBehaviorClasses = shouldWrapText\n ? \"min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]\"\n : normalizedMaxWidth != null || truncate != null\n ? \"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\"\n : \"whitespace-nowrap\";\n\n if (isLegacyVariant(resolvedVariant)) {\n const legacyStyle: CSSProperties = {};\n if (normalizedMaxWidth != null) {\n legacyStyle.maxWidth = normalizedMaxWidth;\n }\n const legacyChildren = resolveDisplayNode(children, truncate, maxWidth, showFullTextTitle);\n const legacyCopyText =\n legacyChildren.fullText ?? (count !== undefined ? String(count) : undefined);\n const canCopy = href == null && (clickToCopy ?? true) && legacyCopyText != null;\n\n return renderRoot({\n href,\n target,\n rel,\n canCopy,\n copyText: legacyCopyText,\n className: cn(\n badgeVariants({ tone, variant: resolvedVariant, size }),\n (normalizedMaxWidth != null || shouldWrapText || truncate != null) && \"min-w-0 max-w-full\",\n shouldWrapText && \"whitespace-normal\",\n canCopy &&\n \"cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n className,\n ),\n style: legacyStyle,\n content: (\n <>\n {icon && (\n <Icon\n {...(typeof icon === \"string\" ? { name: icon } : { icon })}\n className=\"text-[1em]\"\n />\n )}\n {count !== undefined && <span>{count}</span>}\n {children != null && (\n <span className={textBehaviorClasses} title={legacyChildren.title}>\n {legacyChildren.content}\n </span>\n )}\n </>\n ),\n });\n }\n\n if (!isRichVariant(resolvedVariant)) {\n return null;\n }\n\n const semanticStatus = status ?? toneToStatus(tone) ?? \"info\";\n const sizeClasses = RICH_SIZE_CLASSES[size];\n const richLabel = label ?? children;\n const richValue = value ?? (richLabel == null && count !== undefined ? count : undefined);\n const resolvedLabel =\n richValue == null\n ? resolveDisplayNode(richLabel, truncate, maxWidth, showFullTextTitle)\n : {\n content: richLabel,\n fullText: toPlainText(richLabel),\n title: showFullTextTitle ? (toPlainText(richLabel) ?? undefined) : undefined,\n };\n const resolvedValue =\n richValue != null\n ? resolveDisplayNode(richValue, truncate, maxWidth, showFullTextTitle)\n : { content: richValue, fullText: undefined, title: undefined as string | undefined };\n const copyText =\n resolvedValue.fullText ??\n resolvedLabel.fullText ??\n (count !== undefined ? String(count) : undefined);\n const canCopy = href == null && (clickToCopy ?? true) && copyText != null;\n const shapeClass = getShapeClasses(shape ?? \"pill\");\n const wrapperStyle: CSSProperties = {};\n const wrapperClasses: string[] = [\n \"inline-flex align-middle items-stretch border font-medium shadow-none\",\n sizeClasses.frame,\n sizeClasses.text,\n normalizedMaxWidth != null || shouldWrapText || truncate != null ? \"min-w-0 max-w-full\" : \"\",\n shapeClass,\n shouldWrapText ? \"whitespace-normal\" : \"whitespace-nowrap\",\n href ? \"transition-opacity hover:opacity-80\" : \"\",\n canCopy\n ? \"cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\"\n : \"\",\n ];\n\n if (normalizedMaxWidth != null) {\n wrapperStyle.maxWidth = normalizedMaxWidth;\n }\n\n if (resolvedVariant === \"status\") {\n wrapperClasses.push(STATUS_STYLES[semanticStatus].soft);\n } else if (resolvedVariant === \"metric\") {\n wrapperClasses.push(\"bg-muted/60 text-foreground border-border\");\n } else if (resolvedVariant === \"outlined\") {\n if (status != null || toneToStatus(tone) != null) {\n wrapperClasses.push(STATUS_STYLES[semanticStatus].outlined);\n } else {\n wrapperClasses.push(\"bg-background text-foreground border-border\");\n }\n } else if (resolvedVariant === \"custom\") {\n wrapperClasses.push(\"border-transparent bg-accent text-accent-foreground\");\n } else {\n wrapperClasses.push(\"border-border bg-background text-foreground\");\n }\n\n if (\n resolvedVariant === \"custom\" ||\n (resolvedVariant === \"outlined\" && status == null && toneToStatus(tone) == null)\n ) {\n applyColorValue(color, \"backgroundColor\", wrapperStyle, wrapperClasses);\n applyColorValue(textColor, \"color\", wrapperStyle, wrapperClasses);\n applyColorValue(borderColor, \"borderColor\", wrapperStyle, wrapperClasses);\n }\n\n if (\n resolvedVariant !== \"label\" &&\n borderColor != null &&\n status == null &&\n toneToStatus(tone) == null\n ) {\n applyColorValue(borderColor, \"borderColor\", wrapperStyle, wrapperClasses);\n }\n\n const iconEl = icon ? (\n <Icon\n {...(typeof icon === \"string\" ? { name: icon } : { icon })}\n className={cn(\"shrink-0\", sizeClasses.icon)}\n />\n ) : null;\n\n if (resolvedVariant === \"label\") {\n const labelClasses = [\n \"inline-flex items-center self-stretch\",\n richValue != null ? \"shrink-0\" : \"min-w-0\",\n sizeClasses.segment,\n sizeClasses.gap,\n richValue != null ? \"border-r border-border/70\" : \"\",\n ];\n const valueClasses = [\n \"inline-flex min-w-0 items-center self-stretch text-foreground\",\n richLabel != null || iconEl != null ? \"flex-1\" : \"\",\n sizeClasses.segment,\n ];\n const labelStyle: CSSProperties = {};\n\n if (richLabel != null || iconEl != null) {\n labelClasses.push(\"bg-secondary text-secondary-foreground\");\n applyColorValue(color, \"backgroundColor\", labelStyle, labelClasses);\n applyColorValue(textColor, \"color\", labelStyle, labelClasses);\n }\n\n applyColorValue(borderColor, \"borderColor\", wrapperStyle, wrapperClasses);\n\n return renderRoot({\n href,\n target,\n rel,\n canCopy,\n copyText,\n className: cn(wrapperClasses, className),\n style: wrapperStyle,\n content: (\n <>\n {(richLabel != null || iconEl != null) && (\n <span className={cn(labelClasses, labelClassName)} style={labelStyle}>\n {iconEl}\n {richLabel != null && (\n <span className={textBehaviorClasses} title={resolvedLabel.title}>\n {resolvedLabel.content}\n </span>\n )}\n </span>\n )}\n {richValue != null && (\n <span className={cn(valueClasses, valueClassName)}>\n <span className={textBehaviorClasses} title={resolvedValue.title}>\n {resolvedValue.content}\n </span>\n </span>\n )}\n </>\n ),\n });\n }\n\n const labelClasses = [\n \"inline-flex items-center\",\n richValue != null ? \"shrink-0\" : \"min-w-0\",\n sizeClasses.segment,\n sizeClasses.gap,\n richValue != null ? \"border-r border-current/10\" : \"\",\n ];\n const valueClasses = [\n \"inline-flex min-w-0 items-center font-semibold\",\n richLabel != null || iconEl != null ? \"flex-1\" : \"\",\n sizeClasses.segment,\n ];\n\n if (resolvedVariant === \"metric\") {\n labelClasses.push(\"text-muted-foreground\");\n valueClasses.push(\"text-foreground\");\n }\n\n return renderRoot({\n href,\n target,\n rel,\n canCopy,\n copyText,\n className: cn(wrapperClasses, className),\n style: wrapperStyle,\n content: (\n <>\n {(richLabel != null || iconEl != null) && (\n <span className={cn(labelClasses, labelClassName)}>\n {iconEl}\n {richLabel != null && (\n <span className={textBehaviorClasses} title={resolvedLabel.title}>\n {resolvedLabel.content}\n </span>\n )}\n </span>\n )}\n {richValue != null && (\n <span className={cn(valueClasses, valueClassName)}>\n <span className={textBehaviorClasses} title={resolvedValue.title}>\n {resolvedValue.content}\n </span>\n </span>\n )}\n </>\n ),\n });\n}\n"],"names":["canCopy","labelClasses","valueClasses"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Badge.js","sources":["../../src/data/Badge.tsx"],"sourcesContent":["import {\n Children,\n isValidElement,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\nimport { badgeVariants } from \"./badge-variants\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\n\ntype LegacyBadgeVariantProps = VariantProps<typeof badgeVariants>;\n\nexport type BadgeTone = NonNullable<LegacyBadgeVariantProps[\"tone\"]>;\nexport type LegacyBadgeVariant = NonNullable<LegacyBadgeVariantProps[\"variant\"]>;\nexport type BadgeSize = NonNullable<LegacyBadgeVariantProps[\"size\"]>;\nexport type BadgeStatus = \"success\" | \"error\" | \"warning\" | \"info\";\nexport type BadgeShape = \"pill\" | \"rounded\" | \"square\";\nexport type BadgeTruncate = \"prefix\" | \"suffix\" | \"arn\" | \"image\" | \"path\" | \"url\" | \"auto\";\nexport type RichBadgeVariant = \"status\" | \"metric\" | \"custom\" | \"outlined\" | \"label\";\nexport type BadgeVariant = LegacyBadgeVariant | RichBadgeVariant;\n\nconst LEGACY_VARIANTS = new Set<LegacyBadgeVariant>([\"soft\", \"solid\", \"outline\"]);\nconst RICH_VARIANTS = new Set<RichBadgeVariant>([\n \"status\",\n \"metric\",\n \"custom\",\n \"outlined\",\n \"label\",\n]);\n\ntype RichSizeClasses = {\n frame: string;\n segment: string;\n text: string;\n icon: string;\n gap: string;\n};\n\nconst RICH_SIZE_CLASSES: Record<BadgeSize, RichSizeClasses> = {\n xxs: {\n frame: \"min-h-4\",\n segment: \"px-1.5 py-0.5\",\n text: \"text-[10px] leading-4\",\n icon: \"h-3 w-3\",\n gap: \"gap-1\",\n },\n xs: {\n frame: \"min-h-[18px]\",\n segment: \"px-2 py-0.5\",\n text: \"text-[11px] leading-4\",\n icon: \"h-3.5 w-3.5\",\n gap: \"gap-1\",\n },\n sm: {\n frame: \"min-h-5\",\n segment: \"px-2 py-0.5\",\n text: \"text-xs leading-4\",\n icon: \"h-3.5 w-3.5\",\n gap: \"gap-1.5\",\n },\n md: {\n frame: \"min-h-6\",\n segment: \"px-2.5 py-1\",\n text: \"text-sm leading-4\",\n icon: \"h-4 w-4\",\n gap: \"gap-1.5\",\n },\n lg: {\n frame: \"min-h-7\",\n segment: \"px-3 py-1.5\",\n text: \"text-base leading-5\",\n icon: \"h-5 w-5\",\n gap: \"gap-2\",\n },\n};\n\ntype ToneStyle = {\n soft: string;\n outlined: string;\n};\n\nconst STATUS_STYLES: Record<BadgeStatus, ToneStyle> = {\n success: {\n soft: \"bg-emerald-500/12 text-emerald-700 border-emerald-200 dark:text-emerald-300 dark:border-emerald-500/30\",\n outlined: \"bg-background text-emerald-700 border-emerald-300 dark:text-emerald-400 dark:border-emerald-500/40\",\n },\n error: {\n soft: \"bg-rose-500/12 text-rose-700 border-rose-200 dark:text-rose-300 dark:border-rose-500/30\",\n outlined: \"bg-background text-rose-700 border-rose-300 dark:text-rose-400 dark:border-rose-500/40\",\n },\n warning: {\n soft: \"bg-amber-400/15 text-amber-800 border-amber-200 dark:text-amber-300 dark:border-amber-500/30\",\n outlined: \"bg-background text-amber-800 border-amber-300 dark:text-amber-400 dark:border-amber-500/40\",\n },\n info: {\n soft: \"bg-sky-500/12 text-sky-700 border-sky-200 dark:text-sky-300 dark:border-sky-500/30\",\n outlined: \"bg-background text-sky-700 border-sky-300 dark:text-sky-400 dark:border-sky-500/40\",\n },\n};\n\nexport type BadgeProps = {\n /** Semantic color tone for legacy badge variants. */\n tone?: BadgeTone;\n /** Visual variant. Legacy variants are `soft`, `solid`, and `outline`; rich variants add structured label/value layouts. */\n variant?: BadgeVariant;\n /** Density-aware badge size. */\n size?: BadgeSize;\n /** Iconify name or imported icon component rendered before the label. */\n icon?: string | StaticIconComponent;\n /** Optional numeric count rendered as badge content. */\n count?: number;\n /** Fallback content for simple badges. */\n children?: ReactNode;\n /** Classes applied to the badge root. */\n className?: string;\n /** Status palette used by `variant=\"status\"`. */\n status?: BadgeStatus;\n /** Label segment for structured label/value badges. */\n label?: ReactNode;\n /** Value segment for structured label/value badges. */\n value?: ReactNode;\n /** Custom background color or utility class. */\n color?: string;\n /** Custom text color or utility class. */\n textColor?: string;\n /** Custom border color or utility class. */\n borderColor?: string;\n /** Corner treatment for the badge frame. */\n shape?: BadgeShape;\n /** When set, renders the badge as a link. */\n href?: string;\n /** Link target for linked badges. */\n target?: AnchorHTMLAttributes<HTMLAnchorElement>[\"target\"];\n /** Link rel attribute for linked badges. */\n rel?: string;\n /** Allows long label/value content to wrap instead of truncating. */\n wrap?: boolean;\n /** Maximum width before truncation; numbers are treated as character count. */\n maxWidth?: string | number;\n /** Truncation strategy for long values. */\n truncate?: BadgeTruncate;\n /** Copies the plain-text badge value when clicked. */\n clickToCopy?: boolean;\n /** Classes applied to the label segment. */\n labelClassName?: string;\n /** Classes applied to the value segment. */\n valueClassName?: string;\n};\n\nfunction isLegacyVariant(variant: BadgeVariant | undefined): variant is LegacyBadgeVariant {\n return variant != null && LEGACY_VARIANTS.has(variant as LegacyBadgeVariant);\n}\n\nfunction isCssColor(value: string | undefined): value is string {\n return value != null && /^(#|rgb|hsl|oklch|var\\(|color\\()/i.test(value);\n}\n\nfunction toneToStatus(tone: BadgeTone | undefined): BadgeStatus | undefined {\n switch (tone) {\n case \"success\":\n return \"success\";\n case \"danger\":\n return \"error\";\n case \"warning\":\n return \"warning\";\n case \"info\":\n return \"info\";\n default:\n return undefined;\n }\n}\n\nfunction getShapeClasses(shape: BadgeShape): string {\n switch (shape) {\n case \"rounded\":\n return \"rounded-md\";\n case \"square\":\n return \"rounded-sm\";\n default:\n return \"rounded-full\";\n }\n}\n\nfunction isRichVariant(variant: BadgeVariant | undefined): variant is RichBadgeVariant {\n return variant != null && RICH_VARIANTS.has(variant as RichBadgeVariant);\n}\n\nfunction applyColorValue(\n value: string | undefined,\n property: \"backgroundColor\" | \"borderColor\" | \"color\",\n style: CSSProperties,\n classes: string[],\n) {\n if (value == null) return;\n if (isCssColor(value)) {\n (style as Record<\"backgroundColor\" | \"borderColor\" | \"color\", string | undefined>)[property] =\n value;\n return;\n }\n classes.push(value);\n}\n\nfunction normalizeMaxWidth(maxWidth: BadgeProps[\"maxWidth\"]): string | undefined {\n if (maxWidth == null) return undefined;\n if (typeof maxWidth === \"number\") {\n return `${Math.max(1, Math.floor(maxWidth))}ch`;\n }\n return maxWidth;\n}\n\nfunction deriveCharacterBudget(maxWidth: BadgeProps[\"maxWidth\"], fallback = 24): number {\n if (typeof maxWidth === \"number\" && Number.isFinite(maxWidth) && maxWidth > 0) {\n return Math.max(4, Math.floor(maxWidth));\n }\n\n if (typeof maxWidth === \"string\") {\n const trimmed = maxWidth.trim();\n const chMatch = trimmed.match(/^(\\d+(?:\\.\\d+)?)ch$/i);\n if (chMatch) return Math.max(4, Math.floor(Number(chMatch[1])));\n const numericMatch = trimmed.match(/^(\\d+(?:\\.\\d+)?)$/);\n if (numericMatch) return Math.max(4, Math.floor(Number(numericMatch[1])));\n }\n\n return fallback;\n}\n\nfunction shouldExposeFullTextTitle({\n maxWidth,\n truncate,\n wrap,\n}: {\n maxWidth: BadgeProps[\"maxWidth\"] | undefined;\n truncate: BadgeProps[\"truncate\"] | undefined;\n wrap: BadgeProps[\"wrap\"] | undefined;\n}) {\n return maxWidth != null || truncate != null || wrap;\n}\n\nfunction toPlainText(node: ReactNode): string | null {\n if (node == null || typeof node === \"boolean\") return null;\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) {\n const pieces = Children.toArray(node).map(toPlainText);\n return pieces.every((piece) => piece != null) ? pieces.join(\"\") : null;\n }\n if (isValidElement(node)) {\n return toPlainText((node.props as { children?: ReactNode }).children);\n }\n return null;\n}\n\nfunction truncateSuffix(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 1) return \"…\";\n return `${text.slice(0, budget - 1)}…`;\n}\n\nfunction truncatePrefix(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 1) return \"…\";\n return `…${text.slice(-(budget - 1))}`;\n}\n\nfunction truncateMiddle(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 3) return truncateSuffix(text, budget);\n const available = budget - 1;\n const head = Math.max(1, Math.ceil(available / 2));\n const tail = Math.max(1, available - head);\n return `${text.slice(0, head)}…${text.slice(-tail)}`;\n}\n\nfunction truncateSegmentStart(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 2) return truncateSuffix(text, budget);\n return `${text.slice(0, budget - 1)}…`;\n}\n\nfunction truncateSegmentEnd(text: string, budget: number): string {\n if (text.length <= budget) return text;\n if (budget <= 2) return truncatePrefix(text, budget);\n return `…${text.slice(-(budget - 1))}`;\n}\n\nfunction summarizeMiddlePathSegment(segment: string | undefined): string {\n if (segment == null || segment.length === 0) return \"…\";\n if (segment.length <= 2) return `${segment}…`;\n return `${segment[0]}…`;\n}\n\nfunction compressStructuredText(\n head: string,\n middle: string | undefined,\n tail: string,\n budget: number,\n separator: string,\n) {\n const pieces = [head];\n if (middle) pieces.push(middle);\n pieces.push(tail);\n\n const preferred = pieces.join(separator);\n if (preferred.length <= budget) return preferred;\n\n const separatorCount = pieces.length - 1;\n const reserved = separator.length * separatorCount + (middle ? middle.length : 0);\n const available = Math.max(4, budget - reserved);\n const headBudget = Math.max(3, Math.min(head.length, Math.floor(available * 0.4)));\n const tailBudget = Math.max(4, available - headBudget);\n const compactHead = truncateSegmentStart(head, headBudget);\n const compactTail = truncateSegmentEnd(tail, tailBudget);\n const compactPieces = [compactHead];\n if (middle) compactPieces.push(middle);\n compactPieces.push(compactTail);\n const compact = compactPieces.join(separator);\n return compact.length <= budget ? compact : truncateMiddle(preferred, budget);\n}\n\nfunction getStructuredBudget(budget: number): number {\n return Math.max(budget, 32);\n}\n\nfunction truncatePath(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n const hasLeadingSlash = text.startsWith(\"/\");\n const segments = text.split(\"/\").filter(Boolean);\n if (segments.length < 2) return truncateMiddle(text, smartBudget);\n const head = `${hasLeadingSlash ? \"/\" : \"\"}${segments[0]}`;\n const tail = segments[segments.length - 1] ?? text;\n const middle =\n segments.length > 2 ? summarizeMiddlePathSegment(segments.slice(1, -1).join(\"/\")) : undefined;\n return compressStructuredText(head, middle, tail, smartBudget, \"/\");\n}\n\nfunction truncateUrl(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n try {\n const url = new URL(text);\n const host = url.host;\n const pathSegments = url.pathname.split(\"/\").filter(Boolean);\n if (pathSegments.length === 0) {\n if (host.length <= smartBudget) return host;\n return truncateMiddle(`${host}${url.search}${url.hash}`, smartBudget);\n }\n if (pathSegments.length === 1) {\n const singlePath = `${host}/${pathSegments[0] ?? host}`;\n if (singlePath.length <= smartBudget) return singlePath;\n const hostOnly = `${host}/…`;\n return hostOnly.length <= smartBudget ? hostOnly : truncateMiddle(singlePath, smartBudget);\n }\n const tail = pathSegments[pathSegments.length - 1] ?? host;\n const firstSegment = pathSegments[0] ?? \"\";\n const summarizedMiddle =\n pathSegments.length > 2\n ? summarizeMiddlePathSegment(pathSegments.slice(1, -1).join(\"/\"))\n : undefined;\n const candidates = [\n [host, firstSegment, summarizedMiddle, tail].filter(Boolean).join(\"/\"),\n `${host}/…/${tail}`,\n `${host}/…`,\n ];\n const candidate = candidates.find((entry) => entry.length <= smartBudget);\n return candidate ?? truncateMiddle(`${host}/${tail}`, smartBudget);\n } catch {\n return truncateMiddle(text, smartBudget);\n }\n}\n\nfunction isLikelyUrl(text: string): boolean {\n return /^[a-z][a-z\\d+\\-.]*:\\/\\//i.test(text) || text.startsWith(\"//\");\n}\n\nfunction isLikelyImage(text: string): boolean {\n if (/\\s/.test(text) || isLikelyUrl(text) || text.startsWith(\"/\")) return false;\n if (!text.includes(\"/\")) return false;\n const tail = text.slice(text.lastIndexOf(\"/\") + 1);\n return tail.includes(\":\") || tail.includes(\"@sha256:\");\n}\n\nfunction splitImageTail(segment: string) {\n const digestIndex = segment.indexOf(\"@sha256:\");\n if (digestIndex >= 0) {\n return {\n name: segment.slice(0, digestIndex),\n suffix: segment.slice(digestIndex),\n };\n }\n\n const tagIndex = segment.lastIndexOf(\":\");\n if (tagIndex > 0) {\n return {\n name: segment.slice(0, tagIndex),\n suffix: segment.slice(tagIndex),\n };\n }\n\n return { name: segment, suffix: \"\" };\n}\n\nfunction truncateImage(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n const segments = text.split(\"/\").filter(Boolean);\n if (segments.length < 2) return truncateMiddle(text, smartBudget);\n const tailSegment = segments[segments.length - 1] ?? text;\n const tailParts = splitImageTail(tailSegment);\n const tailNameOnly = `…${tailParts.name}`;\n\n if (tailNameOnly.length <= smartBudget) return tailNameOnly;\n\n if (segments.length === 2) {\n return compressStructuredText(\n segments[0] ?? text,\n undefined,\n tailParts.name || tailSegment,\n smartBudget,\n \"/\",\n );\n }\n const head = `${segments[0]}/${segments[1] ?? \"\"}`.replace(/\\/$/, \"\");\n const tail =\n tailParts.suffix.length > 0 && smartBudget >= tailSegment.length\n ? tailSegment\n : tailParts.name || tailSegment;\n const middle =\n segments.length > 3\n ? summarizeMiddlePathSegment(segments.slice(2, -1).join(\"/\"))\n : segments.length === 3\n ? \"…\"\n : undefined;\n return compressStructuredText(head, middle, tail, smartBudget, \"/\");\n}\n\nfunction truncateArn(text: string, budget: number): string {\n const smartBudget = getStructuredBudget(budget);\n const parts = text.split(\":\");\n if (parts.length < 6) return truncateMiddle(text, smartBudget);\n const service = parts[2] ?? parts[1] ?? \"arn\";\n const resource = parts.slice(5).join(\":\");\n const resourceSegments = resource.split(/[/:]/).filter(Boolean);\n const resourceType = resourceSegments.length > 1 ? resourceSegments[0] : undefined;\n const resourceName = resourceSegments[resourceSegments.length - 1] ?? resource;\n const resourceNameTail =\n resourceName.includes(\"-\") && resourceName.split(\"-\").length > 2\n ? resourceName.split(\"-\").slice(-2).join(\"-\")\n : resourceName;\n const typedTail =\n resourceType != null && resourceType !== resourceNameTail\n ? `${resourceType}/${resourceNameTail}`\n : resourceNameTail;\n const preferred = `${service}:…${typedTail}`;\n\n if (preferred.length <= smartBudget) return preferred;\n\n const separatorBudget = 2;\n const resourceBudget = Math.max(\n 4,\n Math.min(resourceNameTail.length, smartBudget - separatorBudget - 2),\n );\n const serviceBudget = Math.max(2, smartBudget - resourceBudget - separatorBudget);\n\n return `${truncateSegmentStart(service, serviceBudget)}:…${truncateMiddle(resourceNameTail, resourceBudget)}`;\n}\n\nfunction detectTruncateStyle(text: string): Exclude<BadgeTruncate, \"auto\"> {\n if (text.startsWith(\"arn:\")) return \"arn\";\n if (isLikelyUrl(text)) return \"url\";\n if (isLikelyImage(text)) return \"image\";\n if (text.includes(\"/\")) return \"path\";\n return \"suffix\";\n}\n\nfunction truncateText(\n text: string,\n truncate: BadgeTruncate,\n maxWidth: BadgeProps[\"maxWidth\"],\n): string {\n const budget = deriveCharacterBudget(maxWidth);\n const mode = truncate === \"auto\" ? detectTruncateStyle(text) : truncate;\n\n switch (mode) {\n case \"prefix\":\n return truncatePrefix(text, budget);\n case \"suffix\":\n return truncateSuffix(text, budget);\n case \"arn\":\n return truncateArn(text, budget);\n case \"image\":\n return truncateImage(text, budget);\n case \"path\":\n return truncatePath(text, budget);\n case \"url\":\n return truncateUrl(text, budget);\n default:\n return truncateSuffix(text, budget);\n }\n}\n\nfunction resolveDisplayNode(\n node: ReactNode,\n truncate: BadgeTruncate | undefined,\n maxWidth: BadgeProps[\"maxWidth\"],\n alwaysTitle = false,\n) {\n const fullText = toPlainText(node);\n if (fullText == null || truncate == null) {\n return {\n content: node,\n fullText,\n title: alwaysTitle ? (fullText ?? undefined) : undefined,\n };\n }\n\n const content = truncateText(fullText, truncate, maxWidth);\n return {\n content,\n fullText,\n title: alwaysTitle || content !== fullText ? fullText : undefined,\n };\n}\n\nfunction copyTextToClipboard(text: string) {\n const clipboard = globalThis.navigator?.clipboard;\n if (clipboard?.writeText == null) return;\n void clipboard.writeText(text).catch(() => undefined);\n}\n\nfunction renderRoot({\n href,\n target,\n rel,\n className,\n style,\n content,\n canCopy,\n copyText,\n}: {\n href: string | undefined;\n target: AnchorHTMLAttributes<HTMLAnchorElement>[\"target\"];\n rel: string | undefined;\n className: string;\n style: CSSProperties | undefined;\n content: ReactNode;\n canCopy: boolean;\n copyText: string | undefined;\n}) {\n if (href != null) {\n return (\n <a\n href={href}\n target={target}\n rel={rel ?? (target === \"_blank\" ? \"noopener noreferrer\" : undefined)}\n className={className}\n style={style}\n >\n {content}\n </a>\n );\n }\n\n if (canCopy && copyText != null) {\n return (\n <button\n type=\"button\"\n className={className}\n style={style}\n onClick={() => copyTextToClipboard(copyText)}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span className={className} style={style}>\n {content}\n </span>\n );\n}\n\nexport function Badge({\n tone,\n variant,\n size = \"md\",\n icon,\n count,\n children,\n className,\n status,\n label,\n value,\n color,\n textColor,\n borderColor,\n shape,\n href,\n target = \"_self\",\n rel,\n wrap = false,\n maxWidth,\n truncate,\n clickToCopy,\n labelClassName,\n valueClassName,\n}: BadgeProps) {\n const richSignals =\n label != null ||\n value != null ||\n status != null ||\n shape != null ||\n href != null ||\n wrap === true ||\n color != null ||\n textColor != null ||\n borderColor != null ||\n labelClassName != null ||\n valueClassName != null;\n const resolvedVariant = variant ?? (richSignals ? \"metric\" : \"soft\");\n const normalizedMaxWidth = normalizeMaxWidth(maxWidth);\n const shouldWrapText = wrap && truncate == null;\n const showFullTextTitle = shouldExposeFullTextTitle({ maxWidth, truncate, wrap });\n const textBehaviorClasses = shouldWrapText\n ? \"min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]\"\n : normalizedMaxWidth != null || truncate != null\n ? \"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\"\n : \"whitespace-nowrap\";\n\n if (isLegacyVariant(resolvedVariant)) {\n const legacyStyle: CSSProperties = {};\n if (normalizedMaxWidth != null) {\n legacyStyle.maxWidth = normalizedMaxWidth;\n }\n const legacyChildren = resolveDisplayNode(children, truncate, maxWidth, showFullTextTitle);\n const legacyCopyText =\n legacyChildren.fullText ?? (count !== undefined ? String(count) : undefined);\n const canCopy = href == null && (clickToCopy ?? true) && legacyCopyText != null;\n\n return renderRoot({\n href,\n target,\n rel,\n canCopy,\n copyText: legacyCopyText,\n className: cn(\n badgeVariants({ tone, variant: resolvedVariant, size }),\n (normalizedMaxWidth != null || shouldWrapText || truncate != null) && \"min-w-0 max-w-full\",\n shouldWrapText && \"whitespace-normal\",\n canCopy &&\n \"cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n className,\n ),\n style: legacyStyle,\n content: (\n <>\n {icon && (\n <Icon\n {...(typeof icon === \"string\" ? { name: icon } : { icon })}\n className=\"text-[1em]\"\n />\n )}\n {count !== undefined && <span>{count}</span>}\n {children != null && (\n <span className={textBehaviorClasses} title={legacyChildren.title}>\n {legacyChildren.content}\n </span>\n )}\n </>\n ),\n });\n }\n\n if (!isRichVariant(resolvedVariant)) {\n return null;\n }\n\n const semanticStatus = status ?? toneToStatus(tone) ?? \"info\";\n const sizeClasses = RICH_SIZE_CLASSES[size];\n const richLabel = label ?? children;\n const richValue = value ?? (richLabel == null && count !== undefined ? count : undefined);\n const resolvedLabel =\n richValue == null\n ? resolveDisplayNode(richLabel, truncate, maxWidth, showFullTextTitle)\n : {\n content: richLabel,\n fullText: toPlainText(richLabel),\n title: showFullTextTitle ? (toPlainText(richLabel) ?? undefined) : undefined,\n };\n const resolvedValue =\n richValue != null\n ? resolveDisplayNode(richValue, truncate, maxWidth, showFullTextTitle)\n : { content: richValue, fullText: undefined, title: undefined as string | undefined };\n const copyText =\n resolvedValue.fullText ??\n resolvedLabel.fullText ??\n (count !== undefined ? String(count) : undefined);\n const canCopy = href == null && (clickToCopy ?? true) && copyText != null;\n const shapeClass = getShapeClasses(shape ?? \"pill\");\n const wrapperStyle: CSSProperties = {};\n const wrapperClasses: string[] = [\n \"inline-flex align-middle items-stretch border font-medium shadow-none\",\n sizeClasses.frame,\n sizeClasses.text,\n normalizedMaxWidth != null || shouldWrapText || truncate != null ? \"min-w-0 max-w-full\" : \"\",\n shapeClass,\n shouldWrapText ? \"whitespace-normal\" : \"whitespace-nowrap\",\n href ? \"transition-opacity hover:opacity-80\" : \"\",\n canCopy\n ? \"cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\"\n : \"\",\n ];\n\n if (normalizedMaxWidth != null) {\n wrapperStyle.maxWidth = normalizedMaxWidth;\n }\n\n if (resolvedVariant === \"status\") {\n wrapperClasses.push(STATUS_STYLES[semanticStatus].soft);\n } else if (resolvedVariant === \"metric\") {\n wrapperClasses.push(\"bg-muted/60 text-foreground border-border\");\n } else if (resolvedVariant === \"outlined\") {\n if (status != null || toneToStatus(tone) != null) {\n wrapperClasses.push(STATUS_STYLES[semanticStatus].outlined);\n } else {\n wrapperClasses.push(\"bg-background text-foreground border-border\");\n }\n } else if (resolvedVariant === \"custom\") {\n wrapperClasses.push(\"border-transparent bg-accent text-accent-foreground\");\n } else {\n wrapperClasses.push(\"border-border bg-background text-foreground\");\n }\n\n if (\n resolvedVariant === \"custom\" ||\n (resolvedVariant === \"outlined\" && status == null && toneToStatus(tone) == null)\n ) {\n applyColorValue(color, \"backgroundColor\", wrapperStyle, wrapperClasses);\n applyColorValue(textColor, \"color\", wrapperStyle, wrapperClasses);\n applyColorValue(borderColor, \"borderColor\", wrapperStyle, wrapperClasses);\n }\n\n if (\n resolvedVariant !== \"label\" &&\n borderColor != null &&\n status == null &&\n toneToStatus(tone) == null\n ) {\n applyColorValue(borderColor, \"borderColor\", wrapperStyle, wrapperClasses);\n }\n\n const iconEl = icon ? (\n <Icon\n {...(typeof icon === \"string\" ? { name: icon } : { icon })}\n className={cn(\"shrink-0\", sizeClasses.icon)}\n />\n ) : null;\n\n if (resolvedVariant === \"label\") {\n const labelClasses = [\n \"inline-flex items-center self-stretch\",\n richValue != null ? \"shrink-0\" : \"min-w-0\",\n sizeClasses.segment,\n sizeClasses.gap,\n richValue != null ? \"border-r border-border/70\" : \"\",\n ];\n const valueClasses = [\n \"inline-flex min-w-0 items-center self-stretch text-foreground\",\n richLabel != null || iconEl != null ? \"flex-1\" : \"\",\n sizeClasses.segment,\n ];\n const labelStyle: CSSProperties = {};\n\n if (richLabel != null || iconEl != null) {\n labelClasses.push(\"bg-secondary text-secondary-foreground\");\n applyColorValue(color, \"backgroundColor\", labelStyle, labelClasses);\n applyColorValue(textColor, \"color\", labelStyle, labelClasses);\n }\n\n applyColorValue(borderColor, \"borderColor\", wrapperStyle, wrapperClasses);\n\n return renderRoot({\n href,\n target,\n rel,\n canCopy,\n copyText,\n className: cn(wrapperClasses, className),\n style: wrapperStyle,\n content: (\n <>\n {(richLabel != null || iconEl != null) && (\n <span className={cn(labelClasses, labelClassName)} style={labelStyle}>\n {iconEl}\n {richLabel != null && (\n <span className={textBehaviorClasses} title={resolvedLabel.title}>\n {resolvedLabel.content}\n </span>\n )}\n </span>\n )}\n {richValue != null && (\n <span className={cn(valueClasses, valueClassName)}>\n <span className={textBehaviorClasses} title={resolvedValue.title}>\n {resolvedValue.content}\n </span>\n </span>\n )}\n </>\n ),\n });\n }\n\n const labelClasses = [\n \"inline-flex items-center\",\n richValue != null ? \"shrink-0\" : \"min-w-0\",\n sizeClasses.segment,\n sizeClasses.gap,\n richValue != null ? \"border-r border-current/10\" : \"\",\n ];\n const valueClasses = [\n \"inline-flex min-w-0 items-center font-semibold\",\n richLabel != null || iconEl != null ? \"flex-1\" : \"\",\n sizeClasses.segment,\n ];\n\n if (resolvedVariant === \"metric\") {\n labelClasses.push(\"text-muted-foreground\");\n valueClasses.push(\"text-foreground\");\n }\n\n return renderRoot({\n href,\n target,\n rel,\n canCopy,\n copyText,\n className: cn(wrapperClasses, className),\n style: wrapperStyle,\n content: (\n <>\n {(richLabel != null || iconEl != null) && (\n <span className={cn(labelClasses, labelClassName)}>\n {iconEl}\n {richLabel != null && (\n <span className={textBehaviorClasses} title={resolvedLabel.title}>\n {resolvedLabel.content}\n </span>\n )}\n </span>\n )}\n {richValue != null && (\n <span className={cn(valueClasses, valueClassName)}>\n <span className={textBehaviorClasses} title={resolvedValue.title}>\n {resolvedValue.content}\n </span>\n </span>\n )}\n </>\n ),\n });\n}\n// HMR probe\n"],"names":["canCopy","labelClasses","valueClasses"],"mappings":";;;;;;AAuBA,MAAM,kBAAkB,oBAAI,IAAwB,CAAC,QAAQ,SAAS,SAAS,CAAC;AAChF,MAAM,oCAAoB,IAAsB;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAUD,MAAM,oBAAwD;AAAA,EAC5D,KAAK;AAAA,IACH,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAAA,EAEP,IAAI;AAAA,IACF,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAAA,EAEP,IAAI;AAAA,IACF,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAAA,EAEP,IAAI;AAAA,IACF,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAAA,EAEP,IAAI;AAAA,IACF,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAET;AAOA,MAAM,gBAAgD;AAAA,EACpD,SAAS;AAAA,IACP,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,OAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,SAAS;AAAA,IACP,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAAA,EAEZ,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,EAAA;AAEd;AAmDA,SAAS,gBAAgB,SAAkE;AACzF,SAAO,WAAW,QAAQ,gBAAgB,IAAI,OAA6B;AAC7E;AAEA,SAAS,WAAW,OAA4C;AAC9D,SAAO,SAAS,QAAQ,oCAAoC,KAAK,KAAK;AACxE;AAEA,SAAS,aAAa,MAAsD;AAC1E,UAAQ,MAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEA,SAAS,gBAAgB,OAA2B;AAClD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEA,SAAS,cAAc,SAAgE;AACrF,SAAO,WAAW,QAAQ,cAAc,IAAI,OAA2B;AACzE;AAEA,SAAS,gBACP,OACA,UACA,OACA,SACA;AACA,MAAI,SAAS,KAAM;AACnB,MAAI,WAAW,KAAK,GAAG;AACpB,UAAkF,QAAQ,IACzF;AACF;AAAA,EACF;AACA,UAAQ,KAAK,KAAK;AACpB;AAEA,SAAS,kBAAkB,UAAsD;AAC/E,MAAI,YAAY,KAAM,QAAO;AAC7B,MAAI,OAAO,aAAa,UAAU;AAChC,WAAO,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,CAAC,CAAC;AAAA,EAC7C;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,UAAkC,WAAW,IAAY;AACtF,MAAI,OAAO,aAAa,YAAY,OAAO,SAAS,QAAQ,KAAK,WAAW,GAAG;AAC7E,WAAO,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,CAAC;AAAA,EACzC;AAEA,MAAI,OAAO,aAAa,UAAU;AAChC,UAAM,UAAU,SAAS,KAAA;AACzB,UAAM,UAAU,QAAQ,MAAM,sBAAsB;AACpD,QAAI,QAAS,QAAO,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,UAAM,eAAe,QAAQ,MAAM,mBAAmB;AACtD,QAAI,aAAc,QAAO,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAAA,EAC1E;AAEA,SAAO;AACT;AAEA,SAAS,0BAA0B;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SAAO,YAAY,QAAQ,YAAY,QAAQ;AACjD;AAEA,SAAS,YAAY,MAAgC;AACnD,MAAI,QAAQ,QAAQ,OAAO,SAAS,UAAW,QAAO;AACtD,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,SAAU,QAAO,OAAO,IAAI;AAC5E,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,UAAM,SAAS,SAAS,QAAQ,IAAI,EAAE,IAAI,WAAW;AACrD,WAAO,OAAO,MAAM,CAAC,UAAU,SAAS,IAAI,IAAI,OAAO,KAAK,EAAE,IAAI;AAAA,EACpE;AACA,MAAI,eAAe,IAAI,GAAG;AACxB,WAAO,YAAa,KAAK,MAAmC,QAAQ;AAAA,EACtE;AACA,SAAO;AACT;AAEA,SAAS,eAAe,MAAc,QAAwB;AAC5D,MAAI,KAAK,UAAU,OAAQ,QAAO;AAClC,MAAI,UAAU,EAAG,QAAO;AACxB,SAAO,GAAG,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;AACrC;AAEA,SAAS,eAAe,MAAc,QAAwB;AAC5D,MAAI,KAAK,UAAU,OAAQ,QAAO;AAClC,MAAI,UAAU,EAAG,QAAO;AACxB,SAAO,IAAI,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC;AACtC;AAEA,SAAS,eAAe,MAAc,QAAwB;AAC5D,MAAI,KAAK,UAAU,OAAQ,QAAO;AAClC,MAAI,UAAU,EAAG,QAAO,eAAe,MAAM,MAAM;AACnD,QAAM,YAAY,SAAS;AAC3B,QAAM,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,YAAY,CAAC,CAAC;AACjD,QAAM,OAAO,KAAK,IAAI,GAAG,YAAY,IAAI;AACzC,SAAO,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;AACpD;AAEA,SAAS,qBAAqB,MAAc,QAAwB;AAClE,MAAI,KAAK,UAAU,OAAQ,QAAO;AAClC,MAAI,UAAU,EAAG,QAAO,eAAe,MAAM,MAAM;AACnD,SAAO,GAAG,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;AACrC;AAEA,SAAS,mBAAmB,MAAc,QAAwB;AAChE,MAAI,KAAK,UAAU,OAAQ,QAAO;AAClC,MAAI,UAAU,EAAG,QAAO,eAAe,MAAM,MAAM;AACnD,SAAO,IAAI,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC;AACtC;AAEA,SAAS,2BAA2B,SAAqC;AACvE,MAAI,WAAW,QAAQ,QAAQ,WAAW,EAAG,QAAO;AACpD,MAAI,QAAQ,UAAU,EAAG,QAAO,GAAG,OAAO;AAC1C,SAAO,GAAG,QAAQ,CAAC,CAAC;AACtB;AAEA,SAAS,uBACP,MACA,QACA,MACA,QACA,WACA;AACA,QAAM,SAAS,CAAC,IAAI;AACpB,MAAI,OAAQ,QAAO,KAAK,MAAM;AAC9B,SAAO,KAAK,IAAI;AAEhB,QAAM,YAAY,OAAO,KAAK,SAAS;AACvC,MAAI,UAAU,UAAU,OAAQ,QAAO;AAEvC,QAAM,iBAAiB,OAAO,SAAS;AACvC,QAAM,WAAW,UAAU,SAAS,kBAAkB,SAAS,OAAO,SAAS;AAC/E,QAAM,YAAY,KAAK,IAAI,GAAG,SAAS,QAAQ;AAC/C,QAAM,aAAa,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,QAAQ,KAAK,MAAM,YAAY,GAAG,CAAC,CAAC;AACjF,QAAM,aAAa,KAAK,IAAI,GAAG,YAAY,UAAU;AACrD,QAAM,cAAc,qBAAqB,MAAM,UAAU;AACzD,QAAM,cAAc,mBAAmB,MAAM,UAAU;AACvD,QAAM,gBAAgB,CAAC,WAAW;AAClC,MAAI,OAAQ,eAAc,KAAK,MAAM;AACrC,gBAAc,KAAK,WAAW;AAC9B,QAAM,UAAU,cAAc,KAAK,SAAS;AAC5C,SAAO,QAAQ,UAAU,SAAS,UAAU,eAAe,WAAW,MAAM;AAC9E;AAEA,SAAS,oBAAoB,QAAwB;AACnD,SAAO,KAAK,IAAI,QAAQ,EAAE;AAC5B;AAEA,SAAS,aAAa,MAAc,QAAwB;AAC1D,QAAM,cAAc,oBAAoB,MAAM;AAC9C,QAAM,kBAAkB,KAAK,WAAW,GAAG;AAC3C,QAAM,WAAW,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAC/C,MAAI,SAAS,SAAS,EAAG,QAAO,eAAe,MAAM,WAAW;AAChE,QAAM,OAAO,GAAG,kBAAkB,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AACxD,QAAM,OAAO,SAAS,SAAS,SAAS,CAAC,KAAK;AAC9C,QAAM,SACJ,SAAS,SAAS,IAAI,2BAA2B,SAAS,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,IAAI;AACtF,SAAO,uBAAuB,MAAM,QAAQ,MAAM,aAAa,GAAG;AACpE;AAEA,SAAS,YAAY,MAAc,QAAwB;AACzD,QAAM,cAAc,oBAAoB,MAAM;AAC9C,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,IAAI;AACxB,UAAM,OAAO,IAAI;AACjB,UAAM,eAAe,IAAI,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAC3D,QAAI,aAAa,WAAW,GAAG;AAC7B,UAAI,KAAK,UAAU,YAAa,QAAO;AACvC,aAAO,eAAe,GAAG,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,IAAI,IAAI,WAAW;AAAA,IACtE;AACA,QAAI,aAAa,WAAW,GAAG;AAC7B,YAAM,aAAa,GAAG,IAAI,IAAI,aAAa,CAAC,KAAK,IAAI;AACrD,UAAI,WAAW,UAAU,YAAa,QAAO;AAC7C,YAAM,WAAW,GAAG,IAAI;AACxB,aAAO,SAAS,UAAU,cAAc,WAAW,eAAe,YAAY,WAAW;AAAA,IAC3F;AACA,UAAM,OAAO,aAAa,aAAa,SAAS,CAAC,KAAK;AACtD,UAAM,eAAe,aAAa,CAAC,KAAK;AACxC,UAAM,mBACJ,aAAa,SAAS,IAClB,2BAA2B,aAAa,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,IAC9D;AACN,UAAM,aAAa;AAAA,MACjB,CAAC,MAAM,cAAc,kBAAkB,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACrE,GAAG,IAAI,MAAM,IAAI;AAAA,MACjB,GAAG,IAAI;AAAA,IAAA;AAET,UAAM,YAAY,WAAW,KAAK,CAAC,UAAU,MAAM,UAAU,WAAW;AACxE,WAAO,aAAa,eAAe,GAAG,IAAI,IAAI,IAAI,IAAI,WAAW;AAAA,EACnE,QAAQ;AACN,WAAO,eAAe,MAAM,WAAW;AAAA,EACzC;AACF;AAEA,SAAS,YAAY,MAAuB;AAC1C,SAAO,2BAA2B,KAAK,IAAI,KAAK,KAAK,WAAW,IAAI;AACtE;AAEA,SAAS,cAAc,MAAuB;AAC5C,MAAI,KAAK,KAAK,IAAI,KAAK,YAAY,IAAI,KAAK,KAAK,WAAW,GAAG,EAAG,QAAO;AACzE,MAAI,CAAC,KAAK,SAAS,GAAG,EAAG,QAAO;AAChC,QAAM,OAAO,KAAK,MAAM,KAAK,YAAY,GAAG,IAAI,CAAC;AACjD,SAAO,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,UAAU;AACvD;AAEA,SAAS,eAAe,SAAiB;AACvC,QAAM,cAAc,QAAQ,QAAQ,UAAU;AAC9C,MAAI,eAAe,GAAG;AACpB,WAAO;AAAA,MACL,MAAM,QAAQ,MAAM,GAAG,WAAW;AAAA,MAClC,QAAQ,QAAQ,MAAM,WAAW;AAAA,IAAA;AAAA,EAErC;AAEA,QAAM,WAAW,QAAQ,YAAY,GAAG;AACxC,MAAI,WAAW,GAAG;AAChB,WAAO;AAAA,MACL,MAAM,QAAQ,MAAM,GAAG,QAAQ;AAAA,MAC/B,QAAQ,QAAQ,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElC;AAEA,SAAO,EAAE,MAAM,SAAS,QAAQ,GAAA;AAClC;AAEA,SAAS,cAAc,MAAc,QAAwB;AAC3D,QAAM,cAAc,oBAAoB,MAAM;AAC9C,QAAM,WAAW,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAC/C,MAAI,SAAS,SAAS,EAAG,QAAO,eAAe,MAAM,WAAW;AAChE,QAAM,cAAc,SAAS,SAAS,SAAS,CAAC,KAAK;AACrD,QAAM,YAAY,eAAe,WAAW;AAC5C,QAAM,eAAe,IAAI,UAAU,IAAI;AAEvC,MAAI,aAAa,UAAU,YAAa,QAAO;AAE/C,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO;AAAA,MACL,SAAS,CAAC,KAAK;AAAA,MACf;AAAA,MACA,UAAU,QAAQ;AAAA,MAClB;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACA,QAAM,OAAO,GAAG,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,QAAQ,OAAO,EAAE;AACpE,QAAM,OACJ,UAAU,OAAO,SAAS,KAAK,eAAe,YAAY,SACtD,cACA,UAAU,QAAQ;AACxB,QAAM,SACJ,SAAS,SAAS,IACd,2BAA2B,SAAS,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,IAC1D,SAAS,WAAW,IAClB,MACA;AACR,SAAO,uBAAuB,MAAM,QAAQ,MAAM,aAAa,GAAG;AACpE;AAEA,SAAS,YAAY,MAAc,QAAwB;AACzD,QAAM,cAAc,oBAAoB,MAAM;AAC9C,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAI,MAAM,SAAS,EAAG,QAAO,eAAe,MAAM,WAAW;AAC7D,QAAM,UAAU,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK;AACxC,QAAM,WAAW,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG;AACxC,QAAM,mBAAmB,SAAS,MAAM,MAAM,EAAE,OAAO,OAAO;AAC9D,QAAM,eAAe,iBAAiB,SAAS,IAAI,iBAAiB,CAAC,IAAI;AACzE,QAAM,eAAe,iBAAiB,iBAAiB,SAAS,CAAC,KAAK;AACtE,QAAM,mBACJ,aAAa,SAAS,GAAG,KAAK,aAAa,MAAM,GAAG,EAAE,SAAS,IAC3D,aAAa,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,IAC1C;AACN,QAAM,YACJ,gBAAgB,QAAQ,iBAAiB,mBACrC,GAAG,YAAY,IAAI,gBAAgB,KACnC;AACN,QAAM,YAAY,GAAG,OAAO,KAAK,SAAS;AAE1C,MAAI,UAAU,UAAU,YAAa,QAAO;AAE5C,QAAM,kBAAkB;AACxB,QAAM,iBAAiB,KAAK;AAAA,IAC1B;AAAA,IACA,KAAK,IAAI,iBAAiB,QAAQ,cAAc,kBAAkB,CAAC;AAAA,EAAA;AAErE,QAAM,gBAAgB,KAAK,IAAI,GAAG,cAAc,iBAAiB,eAAe;AAEhF,SAAO,GAAG,qBAAqB,SAAS,aAAa,CAAC,KAAK,eAAe,kBAAkB,cAAc,CAAC;AAC7G;AAEA,SAAS,oBAAoB,MAA8C;AACzE,MAAI,KAAK,WAAW,MAAM,EAAG,QAAO;AACpC,MAAI,YAAY,IAAI,EAAG,QAAO;AAC9B,MAAI,cAAc,IAAI,EAAG,QAAO;AAChC,MAAI,KAAK,SAAS,GAAG,EAAG,QAAO;AAC/B,SAAO;AACT;AAEA,SAAS,aACP,MACA,UACA,UACQ;AACR,QAAM,SAAS,sBAAsB,QAAQ;AAC7C,QAAM,OAAO,aAAa,SAAS,oBAAoB,IAAI,IAAI;AAE/D,UAAQ,MAAA;AAAA,IACN,KAAK;AACH,aAAO,eAAe,MAAM,MAAM;AAAA,IACpC,KAAK;AACH,aAAO,eAAe,MAAM,MAAM;AAAA,IACpC,KAAK;AACH,aAAO,YAAY,MAAM,MAAM;AAAA,IACjC,KAAK;AACH,aAAO,cAAc,MAAM,MAAM;AAAA,IACnC,KAAK;AACH,aAAO,aAAa,MAAM,MAAM;AAAA,IAClC,KAAK;AACH,aAAO,YAAY,MAAM,MAAM;AAAA,IACjC;AACE,aAAO,eAAe,MAAM,MAAM;AAAA,EAAA;AAExC;AAEA,SAAS,mBACP,MACA,UACA,UACA,cAAc,OACd;AACA,QAAM,WAAW,YAAY,IAAI;AACjC,MAAI,YAAY,QAAQ,YAAY,MAAM;AACxC,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA,OAAO,cAAe,YAAY,SAAa;AAAA,IAAA;AAAA,EAEnD;AAEA,QAAM,UAAU,aAAa,UAAU,UAAU,QAAQ;AACzD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,eAAe,YAAY,WAAW,WAAW;AAAA,EAAA;AAE5D;AAEA,SAAS,oBAAoB,MAAc;;AACzC,QAAM,aAAY,gBAAW,cAAX,mBAAsB;AACxC,OAAI,uCAAW,cAAa,KAAM;AAClC,OAAK,UAAU,UAAU,IAAI,EAAE,MAAM,MAAM,MAAS;AACtD;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AACD,MAAI,QAAQ,MAAM;AAChB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,KAAK,QAAQ,WAAW,WAAW,wBAAwB;AAAA,QAC3D;AAAA,QACA;AAAA,QAEC,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAEA,MAAI,WAAW,YAAY,MAAM;AAC/B,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA,SAAS,MAAM,oBAAoB,QAAQ;AAAA,QAE1C,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAEA,SACE,oBAAC,QAAA,EAAK,WAAsB,OACzB,UAAA,SACH;AAEJ;AAEO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAe;AACb,QAAM,cACJ,SAAS,QACT,SAAS,QACT,UAAU,QACV,SAAS,QACT,QAAQ,QACR,SAAS,QACT,SAAS,QACT,aAAa,QACb,eAAe,QACf,kBAAkB,QAClB,kBAAkB;AACpB,QAAM,kBAAkB,YAAY,cAAc,WAAW;AAC7D,QAAM,qBAAqB,kBAAkB,QAAQ;AACrD,QAAM,iBAAiB,QAAQ,YAAY;AAC3C,QAAM,oBAAoB,0BAA0B,EAAE,UAAU,UAAU,MAAM;AAChF,QAAM,sBAAsB,iBACxB,mEACA,sBAAsB,QAAQ,YAAY,OACxC,4DACA;AAEN,MAAI,gBAAgB,eAAe,GAAG;AACpC,UAAM,cAA6B,CAAA;AACnC,QAAI,sBAAsB,MAAM;AAC9B,kBAAY,WAAW;AAAA,IACzB;AACA,UAAM,iBAAiB,mBAAmB,UAAU,UAAU,UAAU,iBAAiB;AACzF,UAAM,iBACJ,eAAe,aAAa,UAAU,SAAY,OAAO,KAAK,IAAI;AACpE,UAAMA,WAAU,QAAQ,SAAS,eAAe,SAAS,kBAAkB;AAE3E,WAAO,WAAW;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAAA;AAAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,QACT,cAAc,EAAE,MAAM,SAAS,iBAAiB,MAAM;AAAA,SACrD,sBAAsB,QAAQ,kBAAkB,YAAY,SAAS;AAAA,QACtE,kBAAkB;AAAA,QAClBA,YACE;AAAA,QACF;AAAA,MAAA;AAAA,MAEF,OAAO;AAAA,MACP,SACE,qBAAA,UAAA,EACG,UAAA;AAAA,QAAA,QACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAI,OAAO,SAAS,WAAW,EAAE,MAAM,KAAA,IAAS,EAAE,KAAA;AAAA,YACnD,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAGb,UAAU,UAAa,oBAAC,QAAA,EAAM,UAAA,OAAM;AAAA,QACpC,YAAY,QACX,oBAAC,QAAA,EAAK,WAAW,qBAAqB,OAAO,eAAe,OACzD,UAAA,eAAe,QAAA,CAClB;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,CAEH;AAAA,EACH;AAEA,MAAI,CAAC,cAAc,eAAe,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,UAAU,aAAa,IAAI,KAAK;AACvD,QAAM,cAAc,kBAAkB,IAAI;AAC1C,QAAM,YAAY,SAAS;AAC3B,QAAM,YAAY,UAAU,aAAa,QAAQ,UAAU,SAAY,QAAQ;AAC/E,QAAM,gBACJ,aAAa,OACT,mBAAmB,WAAW,UAAU,UAAU,iBAAiB,IACnE;AAAA,IACE,SAAS;AAAA,IACT,UAAU,YAAY,SAAS;AAAA,IAC/B,OAAO,oBAAqB,YAAY,SAAS,KAAK,SAAa;AAAA,EAAA;AAE3E,QAAM,gBACJ,aAAa,OACT,mBAAmB,WAAW,UAAU,UAAU,iBAAiB,IACnE,EAAE,SAAS,WAAW,UAAU,QAAW,OAAO,OAAA;AACxD,QAAM,WACJ,cAAc,YACd,cAAc,aACb,UAAU,SAAY,OAAO,KAAK,IAAI;AACzC,QAAM,UAAU,QAAQ,SAAS,eAAe,SAAS,YAAY;AACrE,QAAM,aAAa,gBAAgB,SAAS,MAAM;AAClD,QAAM,eAA8B,CAAA;AACpC,QAAM,iBAA2B;AAAA,IAC/B;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,sBAAsB,QAAQ,kBAAkB,YAAY,OAAO,uBAAuB;AAAA,IAC1F;AAAA,IACA,iBAAiB,sBAAsB;AAAA,IACvC,OAAO,wCAAwC;AAAA,IAC/C,UACI,iIACA;AAAA,EAAA;AAGN,MAAI,sBAAsB,MAAM;AAC9B,iBAAa,WAAW;AAAA,EAC1B;AAEA,MAAI,oBAAoB,UAAU;AAChC,mBAAe,KAAK,cAAc,cAAc,EAAE,IAAI;AAAA,EACxD,WAAW,oBAAoB,UAAU;AACvC,mBAAe,KAAK,2CAA2C;AAAA,EACjE,WAAW,oBAAoB,YAAY;AACzC,QAAI,UAAU,QAAQ,aAAa,IAAI,KAAK,MAAM;AAChD,qBAAe,KAAK,cAAc,cAAc,EAAE,QAAQ;AAAA,IAC5D,OAAO;AACL,qBAAe,KAAK,6CAA6C;AAAA,IACnE;AAAA,EACF,WAAW,oBAAoB,UAAU;AACvC,mBAAe,KAAK,qDAAqD;AAAA,EAC3E,OAAO;AACL,mBAAe,KAAK,6CAA6C;AAAA,EACnE;AAEA,MACE,oBAAoB,YACnB,oBAAoB,cAAc,UAAU,QAAQ,aAAa,IAAI,KAAK,MAC3E;AACA,oBAAgB,OAAO,mBAAmB,cAAc,cAAc;AACtE,oBAAgB,WAAW,SAAS,cAAc,cAAc;AAChE,oBAAgB,aAAa,eAAe,cAAc,cAAc;AAAA,EAC1E;AAEA,MACE,oBAAoB,WACpB,eAAe,QACf,UAAU,QACV,aAAa,IAAI,KAAK,MACtB;AACA,oBAAgB,aAAa,eAAe,cAAc,cAAc;AAAA,EAC1E;AAEA,QAAM,SAAS,OACb;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAI,OAAO,SAAS,WAAW,EAAE,MAAM,KAAA,IAAS,EAAE,KAAA;AAAA,MACnD,WAAW,GAAG,YAAY,YAAY,IAAI;AAAA,IAAA;AAAA,EAAA,IAE1C;AAEJ,MAAI,oBAAoB,SAAS;AAC/B,UAAMC,gBAAe;AAAA,MACnB;AAAA,MACA,aAAa,OAAO,aAAa;AAAA,MACjC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,aAAa,OAAO,8BAA8B;AAAA,IAAA;AAEpD,UAAMC,gBAAe;AAAA,MACnB;AAAA,MACA,aAAa,QAAQ,UAAU,OAAO,WAAW;AAAA,MACjD,YAAY;AAAA,IAAA;AAEd,UAAM,aAA4B,CAAA;AAElC,QAAI,aAAa,QAAQ,UAAU,MAAM;AACvCD,oBAAa,KAAK,wCAAwC;AAC1D,sBAAgB,OAAO,mBAAmB,YAAYA,aAAY;AAClE,sBAAgB,WAAW,SAAS,YAAYA,aAAY;AAAA,IAC9D;AAEA,oBAAgB,aAAa,eAAe,cAAc,cAAc;AAExE,WAAO,WAAW;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,GAAG,gBAAgB,SAAS;AAAA,MACvC,OAAO;AAAA,MACP,SACE,qBAAA,UAAA,EACI,UAAA;AAAA,SAAA,aAAa,QAAQ,UAAU,SAC/B,qBAAC,QAAA,EAAK,WAAW,GAAGA,eAAc,cAAc,GAAG,OAAO,YACvD,UAAA;AAAA,UAAA;AAAA,UACA,aAAa,QACZ,oBAAC,QAAA,EAAK,WAAW,qBAAqB,OAAO,cAAc,OACxD,UAAA,cAAc,QAAA,CACjB;AAAA,QAAA,GAEJ;AAAA,QAED,aAAa,QACZ,oBAAC,UAAK,WAAW,GAAGC,eAAc,cAAc,GAC9C,UAAA,oBAAC,QAAA,EAAK,WAAW,qBAAqB,OAAO,cAAc,OACxD,UAAA,cAAc,SACjB,EAAA,CACF;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,CAEH;AAAA,EACH;AAEA,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,aAAa,OAAO,aAAa;AAAA,IACjC,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,aAAa,OAAO,+BAA+B;AAAA,EAAA;AAErD,QAAM,eAAe;AAAA,IACnB;AAAA,IACA,aAAa,QAAQ,UAAU,OAAO,WAAW;AAAA,IACjD,YAAY;AAAA,EAAA;AAGd,MAAI,oBAAoB,UAAU;AAChC,iBAAa,KAAK,uBAAuB;AACzC,iBAAa,KAAK,iBAAiB;AAAA,EACrC;AAEA,SAAO,WAAW;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,GAAG,gBAAgB,SAAS;AAAA,IACvC,OAAO;AAAA,IACP,SACE,qBAAA,UAAA,EACI,UAAA;AAAA,OAAA,aAAa,QAAQ,UAAU,SAC/B,qBAAC,UAAK,WAAW,GAAG,cAAc,cAAc,GAC7C,UAAA;AAAA,QAAA;AAAA,QACA,aAAa,QACZ,oBAAC,QAAA,EAAK,WAAW,qBAAqB,OAAO,cAAc,OACxD,UAAA,cAAc,QAAA,CACjB;AAAA,MAAA,GAEJ;AAAA,MAED,aAAa,QACZ,oBAAC,UAAK,WAAW,GAAG,cAAc,cAAc,GAC9C,UAAA,oBAAC,QAAA,EAAK,WAAW,qBAAqB,OAAO,cAAc,OACxD,UAAA,cAAc,SACjB,EAAA,CACF;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,CAEH;AACH;"}
|
package/dist/data/Clicky.cjs
CHANGED
|
@@ -19,6 +19,7 @@ const Badge = require("./Badge.cjs");
|
|
|
19
19
|
const HoverCard = require("../overlay/HoverCard.cjs");
|
|
20
20
|
const Modal = require("../overlay/Modal.cjs");
|
|
21
21
|
const TagList = require("./cells/TagList.cjs");
|
|
22
|
+
const tagUtils = require("./cells/tag-utils.cjs");
|
|
22
23
|
const UiEllipsis = require("../icons/components/UiEllipsis.cjs");
|
|
23
24
|
const UiCheck = require("../icons/components/UiCheck.cjs");
|
|
24
25
|
const UiCloudDownload = require("../icons/components/UiCloudDownload.cjs");
|
|
@@ -659,7 +660,7 @@ function ClickyPdfPreview({ src }) {
|
|
|
659
660
|
{
|
|
660
661
|
title: "Clicky PDF preview",
|
|
661
662
|
src,
|
|
662
|
-
className: "h-[720px] w-full bg-
|
|
663
|
+
className: "h-[720px] w-full bg-background"
|
|
663
664
|
}
|
|
664
665
|
)
|
|
665
666
|
] });
|
|
@@ -684,7 +685,7 @@ function ClickyHtmlPreview({ src }) {
|
|
|
684
685
|
{
|
|
685
686
|
title: "Clicky HTML preview",
|
|
686
687
|
src,
|
|
687
|
-
className: "h-[720px] w-full bg-
|
|
688
|
+
className: "h-[720px] w-full bg-background",
|
|
688
689
|
sandbox: "allow-same-origin"
|
|
689
690
|
}
|
|
690
691
|
)
|
|
@@ -1897,7 +1898,7 @@ function isClickyTagColumn(column) {
|
|
|
1897
1898
|
function clickyNodeTags(node, column) {
|
|
1898
1899
|
if (!isClickyTagColumn(column)) return [];
|
|
1899
1900
|
const value = clickyNodeTagsValue(node);
|
|
1900
|
-
return
|
|
1901
|
+
return tagUtils.normalizeTags(value);
|
|
1901
1902
|
}
|
|
1902
1903
|
function clickyNodeTagsValue(node) {
|
|
1903
1904
|
var _a, _b;
|