@flanksource/clicky-ui 0.2.13 → 0.2.15
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 +5 -3
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +2 -0
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +5 -3
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +3 -1
- package/dist/components/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker.d.ts +5 -1
- package/dist/components/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker.js +3 -1
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/FilterBar.cjs +8 -41
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +0 -2
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +3 -36
- 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/SecretKeySelector.cjs +1 -2
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +5 -3
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +2 -3
- 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 +90 -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 +82 -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 +58 -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 +27 -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/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 +18 -6
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +10 -3
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +16 -4
- 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/TimeseriesCoreBars.cjs +8 -1
- package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
- package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
- package/dist/data/TimeseriesCoreBars.js +8 -1
- package/dist/data/TimeseriesCoreBars.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 +71 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +53 -12
- 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 +11 -4
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +1 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +11 -4
- 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/OperationCatalog.cjs +23 -41
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +24 -42
- 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.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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Density } from './use-density';
|
|
3
|
+
export type DensityProviderProps = {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
defaultDensity?: Density;
|
|
6
|
+
storageKey?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function DensityProvider({ children, defaultDensity, storageKey, }: DensityProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
/**
|
|
10
|
+
* Provide a density value to descendants without owning the storage / setter.
|
|
11
|
+
* Useful when a component (e.g. DataTable) already manages density via its
|
|
12
|
+
* own state and just needs leaf cells like TagList to read the active value
|
|
13
|
+
* via {@link useDensityValue}. Calls to `setDensity` from descendants are
|
|
14
|
+
* ignored — the host component controls density externally.
|
|
15
|
+
*/
|
|
16
|
+
export declare function DensityValueProvider({ density, children, }: {
|
|
17
|
+
density: Density;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=density-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"density-provider.d.ts","sourceRoot":"","sources":["../../src/hooks/density-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAKL,KAAK,OAAO,EAEb,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,cAA8B,EAC9B,UAAgC,GACjC,EAAE,oBAAoB,2CAqBtB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAGA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback, useMemo } from "react";
|
|
3
|
+
import { readStoredDensity, applyDensity, DENSITY_STORAGE_KEY, DensityContext } from "./use-density.js";
|
|
4
|
+
function DensityProvider({
|
|
5
|
+
children,
|
|
6
|
+
defaultDensity = "comfortable",
|
|
7
|
+
storageKey = DENSITY_STORAGE_KEY
|
|
8
|
+
}) {
|
|
9
|
+
const [density, setDensityState] = useState(() => {
|
|
10
|
+
if (typeof window === "undefined") return defaultDensity;
|
|
11
|
+
return readStoredDensity() ?? defaultDensity;
|
|
12
|
+
});
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
applyDensity(density);
|
|
15
|
+
if (typeof window !== "undefined") {
|
|
16
|
+
window.localStorage.setItem(storageKey, density);
|
|
17
|
+
}
|
|
18
|
+
}, [density, storageKey]);
|
|
19
|
+
const setDensity = useCallback((next) => setDensityState(next), []);
|
|
20
|
+
const value = useMemo(
|
|
21
|
+
() => ({ density, setDensity }),
|
|
22
|
+
[density, setDensity]
|
|
23
|
+
);
|
|
24
|
+
return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
|
|
25
|
+
}
|
|
26
|
+
function DensityValueProvider({
|
|
27
|
+
density,
|
|
28
|
+
children
|
|
29
|
+
}) {
|
|
30
|
+
const value = useMemo(() => ({ density, setDensity: () => {
|
|
31
|
+
} }), [density]);
|
|
32
|
+
return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
DensityProvider,
|
|
36
|
+
DensityValueProvider
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=density-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"density-provider.js","sources":["../../src/hooks/density-provider.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport {\n DENSITY_STORAGE_KEY,\n DensityContext,\n applyDensity,\n readStoredDensity,\n type Density,\n type DensityContextValue,\n} from \"./use-density\";\n\nexport type DensityProviderProps = {\n children: ReactNode;\n defaultDensity?: Density;\n storageKey?: string;\n};\n\nexport function DensityProvider({\n children,\n defaultDensity = \"comfortable\",\n storageKey = DENSITY_STORAGE_KEY,\n}: DensityProviderProps) {\n const [density, setDensityState] = useState<Density>(() => {\n if (typeof window === \"undefined\") return defaultDensity;\n return readStoredDensity() ?? defaultDensity;\n });\n\n useEffect(() => {\n applyDensity(density);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, density);\n }\n }, [density, storageKey]);\n\n const setDensity = useCallback((next: Density) => setDensityState(next), []);\n\n const value = useMemo<DensityContextValue>(\n () => ({ density, setDensity }),\n [density, setDensity],\n );\n\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n\n/**\n * Provide a density value to descendants without owning the storage / setter.\n * Useful when a component (e.g. DataTable) already manages density via its\n * own state and just needs leaf cells like TagList to read the active value\n * via {@link useDensityValue}. Calls to `setDensity` from descendants are\n * ignored — the host component controls density externally.\n */\nexport function DensityValueProvider({\n density,\n children,\n}: {\n density: Density;\n children: ReactNode;\n}) {\n const value = useMemo<DensityContextValue>(() => ({ density, setDensity: () => {} }), [density]);\n return <DensityContext.Provider value={value}>{children}</DensityContext.Provider>;\n}\n"],"names":[],"mappings":";;;AAgBO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,iBAAiB;AAAA,EACjB,aAAa;AACf,GAAyB;AACvB,QAAM,CAAC,SAAS,eAAe,IAAI,SAAkB,MAAM;AACzD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAO,uBAAuB;AAAA,EAChC,CAAC;AAED,YAAU,MAAM;AACd,iBAAa,OAAO;AACpB,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,OAAO;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,SAAS,UAAU,CAAC;AAExB,QAAM,aAAa,YAAY,CAAC,SAAkB,gBAAgB,IAAI,GAAG,EAAE;AAE3E,QAAM,QAAQ;AAAA,IACZ,OAAO,EAAE,SAAS;IAClB,CAAC,SAAS,UAAU;AAAA,EAAA;AAGtB,SAAO,oBAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;AASO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAGG;AACD,QAAM,QAAQ,QAA6B,OAAO,EAAE,SAAS,YAAY,MAAM;AAAA,EAAC,EAAA,IAAM,CAAC,OAAO,CAAC;AAC/F,SAAO,oBAAC,eAAe,UAAf,EAAwB,OAAe,SAAA,CAAS;AAC1D;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const useTheme = require("./use-theme.cjs");
|
|
6
|
+
function ThemeProvider({
|
|
7
|
+
children,
|
|
8
|
+
defaultTheme = "system",
|
|
9
|
+
storageKey = useTheme.THEME_STORAGE_KEY
|
|
10
|
+
}) {
|
|
11
|
+
const [theme, setThemeState] = react.useState(() => {
|
|
12
|
+
if (typeof window === "undefined") return defaultTheme;
|
|
13
|
+
return useTheme.readStoredTheme() ?? defaultTheme;
|
|
14
|
+
});
|
|
15
|
+
const [resolvedTheme, setResolvedTheme] = react.useState(() => useTheme.resolveTheme(theme));
|
|
16
|
+
react.useEffect(() => {
|
|
17
|
+
const next = useTheme.resolveTheme(theme);
|
|
18
|
+
setResolvedTheme(next);
|
|
19
|
+
useTheme.applyTheme(next);
|
|
20
|
+
if (typeof window !== "undefined") {
|
|
21
|
+
window.localStorage.setItem(storageKey, theme);
|
|
22
|
+
}
|
|
23
|
+
}, [theme, storageKey]);
|
|
24
|
+
react.useEffect(() => {
|
|
25
|
+
if (theme !== "system" || typeof window === "undefined") return;
|
|
26
|
+
const mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
27
|
+
const onChange = () => {
|
|
28
|
+
const next = mq.matches ? "dark" : "light";
|
|
29
|
+
setResolvedTheme(next);
|
|
30
|
+
useTheme.applyTheme(next);
|
|
31
|
+
};
|
|
32
|
+
mq.addEventListener("change", onChange);
|
|
33
|
+
return () => mq.removeEventListener("change", onChange);
|
|
34
|
+
}, [theme]);
|
|
35
|
+
const setTheme = react.useCallback((next) => setThemeState(next), []);
|
|
36
|
+
const value = react.useMemo(
|
|
37
|
+
() => ({ theme, resolvedTheme, setTheme }),
|
|
38
|
+
[theme, resolvedTheme, setTheme]
|
|
39
|
+
);
|
|
40
|
+
return /* @__PURE__ */ jsxRuntime.jsx(useTheme.ThemeContext.Provider, { value, children });
|
|
41
|
+
}
|
|
42
|
+
exports.ThemeProvider = ThemeProvider;
|
|
43
|
+
//# sourceMappingURL=theme-provider.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-provider.cjs","sources":["../../src/hooks/theme-provider.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport {\n THEME_STORAGE_KEY,\n ThemeContext,\n applyTheme,\n readStoredTheme,\n resolveTheme,\n type ResolvedTheme,\n type Theme,\n type ThemeContextValue,\n} from \"./use-theme\";\n\nexport type ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = THEME_STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return readStoredTheme() ?? defaultTheme;\n });\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolveTheme(theme));\n\n useEffect(() => {\n const next = resolveTheme(theme);\n setResolvedTheme(next);\n applyTheme(next);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, theme);\n }\n }, [theme, storageKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n const next: ResolvedTheme = mq.matches ? \"dark\" : \"light\";\n setResolvedTheme(next);\n applyTheme(next);\n };\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [theme]);\n\n const setTheme = useCallback((next: Theme) => setThemeState(next), []);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n"],"names":["THEME_STORAGE_KEY","useState","readStoredTheme","resolveTheme","useEffect","applyTheme","useCallback","useMemo","jsx","ThemeContext"],"mappings":";;;;;AAkBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,eAAe;AAAA,EACf,aAAaA,SAAAA;AACf,GAAuB;AACrB,QAAM,CAAC,OAAO,aAAa,IAAIC,MAAAA,SAAgB,MAAM;AACnD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAOC,SAAAA,qBAAqB;AAAA,EAC9B,CAAC;AACD,QAAM,CAAC,eAAe,gBAAgB,IAAID,MAAAA,SAAwB,MAAME,SAAAA,aAAa,KAAK,CAAC;AAE3FC,QAAAA,UAAU,MAAM;AACd,UAAM,OAAOD,SAAAA,aAAa,KAAK;AAC/B,qBAAiB,IAAI;AACrBE,aAAAA,WAAW,IAAI;AACf,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,KAAK;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,UAAU,CAAC;AAEtBD,QAAAA,UAAU,MAAM;AACd,QAAI,UAAU,YAAY,OAAO,WAAW,YAAa;AACzD,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM;AACrB,YAAM,OAAsB,GAAG,UAAU,SAAS;AAClD,uBAAiB,IAAI;AACrBC,eAAAA,WAAW,IAAI;AAAA,IACjB;AACA,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,WAAWC,MAAAA,YAAY,CAAC,SAAgB,cAAc,IAAI,GAAG,EAAE;AAErE,QAAM,QAAQC,MAAAA;AAAAA,IACZ,OAAO,EAAE,OAAO,eAAe;IAC/B,CAAC,OAAO,eAAe,QAAQ;AAAA,EAAA;AAGjC,SAAOC,2BAAAA,IAACC,SAAAA,aAAa,UAAb,EAAsB,OAAe,SAAA,CAAS;AACxD;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Theme } from './use-theme';
|
|
3
|
+
export type ThemeProviderProps = {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
defaultTheme?: Theme;
|
|
6
|
+
storageKey?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=theme-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../src/hooks/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAOL,KAAK,KAAK,EAEX,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAuB,EACvB,UAA8B,GAC/B,EAAE,kBAAkB,2CAoCpB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback, useMemo } from "react";
|
|
3
|
+
import { readStoredTheme, resolveTheme, applyTheme, THEME_STORAGE_KEY, ThemeContext } from "./use-theme.js";
|
|
4
|
+
function ThemeProvider({
|
|
5
|
+
children,
|
|
6
|
+
defaultTheme = "system",
|
|
7
|
+
storageKey = THEME_STORAGE_KEY
|
|
8
|
+
}) {
|
|
9
|
+
const [theme, setThemeState] = useState(() => {
|
|
10
|
+
if (typeof window === "undefined") return defaultTheme;
|
|
11
|
+
return readStoredTheme() ?? defaultTheme;
|
|
12
|
+
});
|
|
13
|
+
const [resolvedTheme, setResolvedTheme] = useState(() => resolveTheme(theme));
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const next = resolveTheme(theme);
|
|
16
|
+
setResolvedTheme(next);
|
|
17
|
+
applyTheme(next);
|
|
18
|
+
if (typeof window !== "undefined") {
|
|
19
|
+
window.localStorage.setItem(storageKey, theme);
|
|
20
|
+
}
|
|
21
|
+
}, [theme, storageKey]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (theme !== "system" || typeof window === "undefined") return;
|
|
24
|
+
const mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
25
|
+
const onChange = () => {
|
|
26
|
+
const next = mq.matches ? "dark" : "light";
|
|
27
|
+
setResolvedTheme(next);
|
|
28
|
+
applyTheme(next);
|
|
29
|
+
};
|
|
30
|
+
mq.addEventListener("change", onChange);
|
|
31
|
+
return () => mq.removeEventListener("change", onChange);
|
|
32
|
+
}, [theme]);
|
|
33
|
+
const setTheme = useCallback((next) => setThemeState(next), []);
|
|
34
|
+
const value = useMemo(
|
|
35
|
+
() => ({ theme, resolvedTheme, setTheme }),
|
|
36
|
+
[theme, resolvedTheme, setTheme]
|
|
37
|
+
);
|
|
38
|
+
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
ThemeProvider
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=theme-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-provider.js","sources":["../../src/hooks/theme-provider.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport {\n THEME_STORAGE_KEY,\n ThemeContext,\n applyTheme,\n readStoredTheme,\n resolveTheme,\n type ResolvedTheme,\n type Theme,\n type ThemeContextValue,\n} from \"./use-theme\";\n\nexport type ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n storageKey = THEME_STORAGE_KEY,\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n return readStoredTheme() ?? defaultTheme;\n });\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() => resolveTheme(theme));\n\n useEffect(() => {\n const next = resolveTheme(theme);\n setResolvedTheme(next);\n applyTheme(next);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, theme);\n }\n }, [theme, storageKey]);\n\n useEffect(() => {\n if (theme !== \"system\" || typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n const next: ResolvedTheme = mq.matches ? \"dark\" : \"light\";\n setResolvedTheme(next);\n applyTheme(next);\n };\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, [theme]);\n\n const setTheme = useCallback((next: Theme) => setThemeState(next), []);\n\n const value = useMemo<ThemeContextValue>(\n () => ({ theme, resolvedTheme, setTheme }),\n [theme, resolvedTheme, setTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n"],"names":[],"mappings":";;;AAkBO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,eAAe;AAAA,EACf,aAAa;AACf,GAAuB;AACrB,QAAM,CAAC,OAAO,aAAa,IAAI,SAAgB,MAAM;AACnD,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,WAAO,qBAAqB;AAAA,EAC9B,CAAC;AACD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,MAAM,aAAa,KAAK,CAAC;AAE3F,YAAU,MAAM;AACd,UAAM,OAAO,aAAa,KAAK;AAC/B,qBAAiB,IAAI;AACrB,eAAW,IAAI;AACf,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,aAAa,QAAQ,YAAY,KAAK;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,OAAO,UAAU,CAAC;AAEtB,YAAU,MAAM;AACd,QAAI,UAAU,YAAY,OAAO,WAAW,YAAa;AACzD,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM;AACrB,YAAM,OAAsB,GAAG,UAAU,SAAS;AAClD,uBAAiB,IAAI;AACrB,iBAAW,IAAI;AAAA,IACjB;AACA,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,WAAW,YAAY,CAAC,SAAgB,cAAc,IAAI,GAAG,EAAE;AAErE,QAAM,QAAQ;AAAA,IACZ,OAAO,EAAE,OAAO,eAAe;IAC/B,CAAC,OAAO,eAAe,QAAQ;AAAA,EAAA;AAGjC,SAAO,oBAAC,aAAa,UAAb,EAAsB,OAAe,SAAA,CAAS;AACxD;"}
|
|
@@ -1,54 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
4
3
|
const react = require("react");
|
|
5
|
-
const
|
|
4
|
+
const DENSITY_STORAGE_KEY = "clicky-ui-density";
|
|
6
5
|
const DATA_ATTR = "data-density";
|
|
7
6
|
const DensityContext = react.createContext(null);
|
|
8
|
-
function
|
|
7
|
+
function readStoredDensity() {
|
|
9
8
|
if (typeof window === "undefined") return null;
|
|
10
|
-
const raw = window.localStorage.getItem(
|
|
9
|
+
const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);
|
|
11
10
|
return raw === "compact" || raw === "comfortable" || raw === "spacious" ? raw : null;
|
|
12
11
|
}
|
|
13
|
-
function
|
|
12
|
+
function applyDensity(density) {
|
|
14
13
|
if (typeof document === "undefined") return;
|
|
15
14
|
document.documentElement.setAttribute(DATA_ATTR, density);
|
|
16
15
|
}
|
|
17
|
-
function DensityProvider({
|
|
18
|
-
children,
|
|
19
|
-
defaultDensity = "comfortable",
|
|
20
|
-
storageKey = STORAGE_KEY
|
|
21
|
-
}) {
|
|
22
|
-
const [density, setDensityState] = react.useState(() => {
|
|
23
|
-
if (typeof window === "undefined") return defaultDensity;
|
|
24
|
-
return readStored() ?? defaultDensity;
|
|
25
|
-
});
|
|
26
|
-
react.useEffect(() => {
|
|
27
|
-
apply(density);
|
|
28
|
-
if (typeof window !== "undefined") {
|
|
29
|
-
window.localStorage.setItem(storageKey, density);
|
|
30
|
-
}
|
|
31
|
-
}, [density, storageKey]);
|
|
32
|
-
const setDensity = react.useCallback((next) => setDensityState(next), []);
|
|
33
|
-
const value = react.useMemo(
|
|
34
|
-
() => ({ density, setDensity }),
|
|
35
|
-
[density, setDensity]
|
|
36
|
-
);
|
|
37
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DensityContext.Provider, { value, children });
|
|
38
|
-
}
|
|
39
16
|
function useDensity() {
|
|
40
17
|
const ctx = react.useContext(DensityContext);
|
|
41
18
|
if (!ctx) throw new Error("useDensity must be used inside <DensityProvider>");
|
|
42
19
|
return ctx;
|
|
43
20
|
}
|
|
44
|
-
function DensityValueProvider({
|
|
45
|
-
density,
|
|
46
|
-
children
|
|
47
|
-
}) {
|
|
48
|
-
const value = react.useMemo(() => ({ density, setDensity: () => {
|
|
49
|
-
} }), [density]);
|
|
50
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DensityContext.Provider, { value, children });
|
|
51
|
-
}
|
|
52
21
|
function useDensityValue() {
|
|
53
22
|
const ctx = react.useContext(DensityContext);
|
|
54
23
|
if (ctx) return ctx.density;
|
|
@@ -56,8 +25,10 @@ function useDensityValue() {
|
|
|
56
25
|
const raw = document.documentElement.getAttribute("data-density");
|
|
57
26
|
return raw === "compact" || raw === "spacious" ? raw : "comfortable";
|
|
58
27
|
}
|
|
59
|
-
exports.
|
|
60
|
-
exports.
|
|
28
|
+
exports.DENSITY_STORAGE_KEY = DENSITY_STORAGE_KEY;
|
|
29
|
+
exports.DensityContext = DensityContext;
|
|
30
|
+
exports.applyDensity = applyDensity;
|
|
31
|
+
exports.readStoredDensity = readStoredDensity;
|
|
61
32
|
exports.useDensity = useDensity;
|
|
62
33
|
exports.useDensityValue = useDensityValue;
|
|
63
34
|
//# sourceMappingURL=use-density.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-density.cjs","sources":["../../src/hooks/use-density.
|
|
1
|
+
{"version":3,"file":"use-density.cjs","sources":["../../src/hooks/use-density.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\nexport type DensityContextValue = {\n density: Density;\n setDensity: (next: Density) => void;\n};\n\nexport const DENSITY_STORAGE_KEY = \"clicky-ui-density\";\nconst DATA_ATTR = \"data-density\";\n\nexport const DensityContext = createContext<DensityContextValue | null>(null);\n\nexport function readStoredDensity(): Density | null {\n if (typeof window === \"undefined\") return null;\n const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);\n return raw === \"compact\" || raw === \"comfortable\" || raw === \"spacious\" ? raw : null;\n}\n\nexport function applyDensity(density: Density): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, density);\n}\n\nexport function useDensity(): DensityContextValue {\n const ctx = useContext(DensityContext);\n if (!ctx) throw new Error(\"useDensity must be used inside <DensityProvider>\");\n return ctx;\n}\n\n/**\n * Non-throwing density read. Returns the context value if a `<DensityProvider>`\n * is mounted, otherwise reads the current `data-density` attribute on\n * `<html>`, falling back to `comfortable`. Use inside leaf components that\n * should respect density without requiring their host to mount a provider.\n */\nexport function useDensityValue(): Density {\n const ctx = useContext(DensityContext);\n if (ctx) return ctx.density;\n if (typeof document === \"undefined\") return \"comfortable\";\n const raw = document.documentElement.getAttribute(\"data-density\");\n return raw === \"compact\" || raw === \"spacious\" ? raw : \"comfortable\";\n}\n"],"names":["createContext","useContext"],"mappings":";;;AASO,MAAM,sBAAsB;AACnC,MAAM,YAAY;AAEX,MAAM,iBAAiBA,MAAAA,cAA0C,IAAI;AAErE,SAAS,oBAAoC;AAClD,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,mBAAmB;AAC3D,SAAO,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,aAAa,MAAM;AAClF;AAEO,SAAS,aAAa,SAAwB;AACnD,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,OAAO;AAC1D;AAEO,SAAS,aAAkC;AAChD,QAAM,MAAMC,MAAAA,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kDAAkD;AAC5E,SAAO;AACT;AAQO,SAAS,kBAA2B;AACzC,QAAM,MAAMA,MAAAA,WAAW,cAAc;AACrC,MAAI,YAAY,IAAI;AACpB,MAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAM,MAAM,SAAS,gBAAgB,aAAa,cAAc;AAChE,SAAO,QAAQ,aAAa,QAAQ,aAAa,MAAM;AACzD;;;;;;;"}
|
|
@@ -1,27 +1,13 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
1
|
export type Density = "compact" | "comfortable" | "spacious";
|
|
3
|
-
type DensityContextValue = {
|
|
2
|
+
export type DensityContextValue = {
|
|
4
3
|
density: Density;
|
|
5
4
|
setDensity: (next: Density) => void;
|
|
6
5
|
};
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
export declare function DensityProvider({ children, defaultDensity, storageKey, }: DensityProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare const DENSITY_STORAGE_KEY = "clicky-ui-density";
|
|
7
|
+
export declare const DensityContext: import('react').Context<DensityContextValue | null>;
|
|
8
|
+
export declare function readStoredDensity(): Density | null;
|
|
9
|
+
export declare function applyDensity(density: Density): void;
|
|
13
10
|
export declare function useDensity(): DensityContextValue;
|
|
14
|
-
/**
|
|
15
|
-
* Provide a density value to descendants without owning the storage / setter.
|
|
16
|
-
* Useful when a component (e.g. DataTable) already manages density via its
|
|
17
|
-
* own state and just needs leaf cells like TagList to read the active value
|
|
18
|
-
* via {@link useDensityValue}. Calls to `setDensity` from descendants are
|
|
19
|
-
* ignored — the host component controls density externally.
|
|
20
|
-
*/
|
|
21
|
-
export declare function DensityValueProvider({ density, children, }: {
|
|
22
|
-
density: Density;
|
|
23
|
-
children: ReactNode;
|
|
24
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
25
11
|
/**
|
|
26
12
|
* Non-throwing density read. Returns the context value if a `<DensityProvider>`
|
|
27
13
|
* is mounted, otherwise reads the current `data-density` attribute on
|
|
@@ -29,5 +15,4 @@ export declare function DensityValueProvider({ density, children, }: {
|
|
|
29
15
|
* should respect density without requiring their host to mount a provider.
|
|
30
16
|
*/
|
|
31
17
|
export declare function useDensityValue(): Density;
|
|
32
|
-
export {};
|
|
33
18
|
//# sourceMappingURL=use-density.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-density.d.ts","sourceRoot":"","sources":["../../src/hooks/use-density.
|
|
1
|
+
{"version":3,"file":"use-density.d.ts","sourceRoot":"","sources":["../../src/hooks/use-density.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAGvD,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAE9E,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,IAAI,CAIlD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGnD;AAED,wBAAgB,UAAU,IAAI,mBAAmB,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAMzC"}
|
|
@@ -1,52 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const STORAGE_KEY = "clicky-ui-density";
|
|
1
|
+
import { useContext, createContext } from "react";
|
|
2
|
+
const DENSITY_STORAGE_KEY = "clicky-ui-density";
|
|
4
3
|
const DATA_ATTR = "data-density";
|
|
5
4
|
const DensityContext = createContext(null);
|
|
6
|
-
function
|
|
5
|
+
function readStoredDensity() {
|
|
7
6
|
if (typeof window === "undefined") return null;
|
|
8
|
-
const raw = window.localStorage.getItem(
|
|
7
|
+
const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);
|
|
9
8
|
return raw === "compact" || raw === "comfortable" || raw === "spacious" ? raw : null;
|
|
10
9
|
}
|
|
11
|
-
function
|
|
10
|
+
function applyDensity(density) {
|
|
12
11
|
if (typeof document === "undefined") return;
|
|
13
12
|
document.documentElement.setAttribute(DATA_ATTR, density);
|
|
14
13
|
}
|
|
15
|
-
function DensityProvider({
|
|
16
|
-
children,
|
|
17
|
-
defaultDensity = "comfortable",
|
|
18
|
-
storageKey = STORAGE_KEY
|
|
19
|
-
}) {
|
|
20
|
-
const [density, setDensityState] = useState(() => {
|
|
21
|
-
if (typeof window === "undefined") return defaultDensity;
|
|
22
|
-
return readStored() ?? defaultDensity;
|
|
23
|
-
});
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
apply(density);
|
|
26
|
-
if (typeof window !== "undefined") {
|
|
27
|
-
window.localStorage.setItem(storageKey, density);
|
|
28
|
-
}
|
|
29
|
-
}, [density, storageKey]);
|
|
30
|
-
const setDensity = useCallback((next) => setDensityState(next), []);
|
|
31
|
-
const value = useMemo(
|
|
32
|
-
() => ({ density, setDensity }),
|
|
33
|
-
[density, setDensity]
|
|
34
|
-
);
|
|
35
|
-
return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
|
|
36
|
-
}
|
|
37
14
|
function useDensity() {
|
|
38
15
|
const ctx = useContext(DensityContext);
|
|
39
16
|
if (!ctx) throw new Error("useDensity must be used inside <DensityProvider>");
|
|
40
17
|
return ctx;
|
|
41
18
|
}
|
|
42
|
-
function DensityValueProvider({
|
|
43
|
-
density,
|
|
44
|
-
children
|
|
45
|
-
}) {
|
|
46
|
-
const value = useMemo(() => ({ density, setDensity: () => {
|
|
47
|
-
} }), [density]);
|
|
48
|
-
return /* @__PURE__ */ jsx(DensityContext.Provider, { value, children });
|
|
49
|
-
}
|
|
50
19
|
function useDensityValue() {
|
|
51
20
|
const ctx = useContext(DensityContext);
|
|
52
21
|
if (ctx) return ctx.density;
|
|
@@ -55,8 +24,10 @@ function useDensityValue() {
|
|
|
55
24
|
return raw === "compact" || raw === "spacious" ? raw : "comfortable";
|
|
56
25
|
}
|
|
57
26
|
export {
|
|
58
|
-
|
|
59
|
-
|
|
27
|
+
DENSITY_STORAGE_KEY,
|
|
28
|
+
DensityContext,
|
|
29
|
+
applyDensity,
|
|
30
|
+
readStoredDensity,
|
|
60
31
|
useDensity,
|
|
61
32
|
useDensityValue
|
|
62
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-density.js","sources":["../../src/hooks/use-density.
|
|
1
|
+
{"version":3,"file":"use-density.js","sources":["../../src/hooks/use-density.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport type Density = \"compact\" | \"comfortable\" | \"spacious\";\n\nexport type DensityContextValue = {\n density: Density;\n setDensity: (next: Density) => void;\n};\n\nexport const DENSITY_STORAGE_KEY = \"clicky-ui-density\";\nconst DATA_ATTR = \"data-density\";\n\nexport const DensityContext = createContext<DensityContextValue | null>(null);\n\nexport function readStoredDensity(): Density | null {\n if (typeof window === \"undefined\") return null;\n const raw = window.localStorage.getItem(DENSITY_STORAGE_KEY);\n return raw === \"compact\" || raw === \"comfortable\" || raw === \"spacious\" ? raw : null;\n}\n\nexport function applyDensity(density: Density): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, density);\n}\n\nexport function useDensity(): DensityContextValue {\n const ctx = useContext(DensityContext);\n if (!ctx) throw new Error(\"useDensity must be used inside <DensityProvider>\");\n return ctx;\n}\n\n/**\n * Non-throwing density read. Returns the context value if a `<DensityProvider>`\n * is mounted, otherwise reads the current `data-density` attribute on\n * `<html>`, falling back to `comfortable`. Use inside leaf components that\n * should respect density without requiring their host to mount a provider.\n */\nexport function useDensityValue(): Density {\n const ctx = useContext(DensityContext);\n if (ctx) return ctx.density;\n if (typeof document === \"undefined\") return \"comfortable\";\n const raw = document.documentElement.getAttribute(\"data-density\");\n return raw === \"compact\" || raw === \"spacious\" ? raw : \"comfortable\";\n}\n"],"names":[],"mappings":";AASO,MAAM,sBAAsB;AACnC,MAAM,YAAY;AAEX,MAAM,iBAAiB,cAA0C,IAAI;AAErE,SAAS,oBAAoC;AAClD,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,mBAAmB;AAC3D,SAAO,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,aAAa,MAAM;AAClF;AAEO,SAAS,aAAa,SAAwB;AACnD,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,OAAO;AAC1D;AAEO,SAAS,aAAkC;AAChD,QAAM,MAAM,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kDAAkD;AAC5E,SAAO;AACT;AAQO,SAAS,kBAA2B;AACzC,QAAM,MAAM,WAAW,cAAc;AACrC,MAAI,YAAY,IAAI;AACpB,MAAI,OAAO,aAAa,YAAa,QAAO;AAC5C,QAAM,MAAM,SAAS,gBAAgB,aAAa,cAAc;AAChE,SAAO,QAAQ,aAAa,QAAQ,aAAa,MAAM;AACzD;"}
|
package/dist/hooks/use-theme.cjs
CHANGED
|
@@ -1,63 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
4
3
|
const react = require("react");
|
|
5
|
-
const
|
|
4
|
+
const THEME_STORAGE_KEY = "clicky-ui-theme";
|
|
6
5
|
const DATA_ATTR = "data-theme";
|
|
7
6
|
const ThemeContext = react.createContext(null);
|
|
8
7
|
function prefersDark() {
|
|
9
8
|
if (typeof window === "undefined") return false;
|
|
10
9
|
return window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
11
10
|
}
|
|
12
|
-
function
|
|
11
|
+
function readStoredTheme() {
|
|
13
12
|
if (typeof window === "undefined") return "system";
|
|
14
|
-
const raw = window.localStorage.getItem(
|
|
13
|
+
const raw = window.localStorage.getItem(THEME_STORAGE_KEY);
|
|
15
14
|
return raw === "light" || raw === "dark" || raw === "system" ? raw : "system";
|
|
16
15
|
}
|
|
17
|
-
function
|
|
16
|
+
function resolveTheme(theme) {
|
|
18
17
|
if (theme === "system") return prefersDark() ? "dark" : "light";
|
|
19
18
|
return theme;
|
|
20
19
|
}
|
|
21
|
-
function
|
|
20
|
+
function applyTheme(resolved) {
|
|
22
21
|
if (typeof document === "undefined") return;
|
|
23
22
|
document.documentElement.setAttribute(DATA_ATTR, resolved);
|
|
24
23
|
}
|
|
25
|
-
function ThemeProvider({
|
|
26
|
-
children,
|
|
27
|
-
defaultTheme = "system",
|
|
28
|
-
storageKey = STORAGE_KEY
|
|
29
|
-
}) {
|
|
30
|
-
const [theme, setThemeState] = react.useState(() => {
|
|
31
|
-
if (typeof window === "undefined") return defaultTheme;
|
|
32
|
-
return readStored() ?? defaultTheme;
|
|
33
|
-
});
|
|
34
|
-
const [resolvedTheme, setResolvedTheme] = react.useState(() => resolve(theme));
|
|
35
|
-
react.useEffect(() => {
|
|
36
|
-
const next = resolve(theme);
|
|
37
|
-
setResolvedTheme(next);
|
|
38
|
-
apply(next);
|
|
39
|
-
if (typeof window !== "undefined") {
|
|
40
|
-
window.localStorage.setItem(storageKey, theme);
|
|
41
|
-
}
|
|
42
|
-
}, [theme, storageKey]);
|
|
43
|
-
react.useEffect(() => {
|
|
44
|
-
if (theme !== "system" || typeof window === "undefined") return;
|
|
45
|
-
const mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
46
|
-
const onChange = () => {
|
|
47
|
-
const next = mq.matches ? "dark" : "light";
|
|
48
|
-
setResolvedTheme(next);
|
|
49
|
-
apply(next);
|
|
50
|
-
};
|
|
51
|
-
mq.addEventListener("change", onChange);
|
|
52
|
-
return () => mq.removeEventListener("change", onChange);
|
|
53
|
-
}, [theme]);
|
|
54
|
-
const setTheme = react.useCallback((next) => setThemeState(next), []);
|
|
55
|
-
const value = react.useMemo(
|
|
56
|
-
() => ({ theme, resolvedTheme, setTheme }),
|
|
57
|
-
[theme, resolvedTheme, setTheme]
|
|
58
|
-
);
|
|
59
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ThemeContext.Provider, { value, children });
|
|
60
|
-
}
|
|
61
24
|
function useTheme() {
|
|
62
25
|
const ctx = react.useContext(ThemeContext);
|
|
63
26
|
if (!ctx) throw new Error("useTheme must be used inside <ThemeProvider>");
|
|
@@ -83,7 +46,11 @@ function useResolvedTheme(override) {
|
|
|
83
46
|
if (ctx) return ctx.resolvedTheme;
|
|
84
47
|
return systemResolved;
|
|
85
48
|
}
|
|
86
|
-
exports.
|
|
49
|
+
exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY;
|
|
50
|
+
exports.ThemeContext = ThemeContext;
|
|
51
|
+
exports.applyTheme = applyTheme;
|
|
52
|
+
exports.readStoredTheme = readStoredTheme;
|
|
53
|
+
exports.resolveTheme = resolveTheme;
|
|
87
54
|
exports.useOptionalTheme = useOptionalTheme;
|
|
88
55
|
exports.useResolvedTheme = useResolvedTheme;
|
|
89
56
|
exports.useTheme = useTheme;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-theme.cjs","sources":["../../src/hooks/use-theme.
|
|
1
|
+
{"version":3,"file":"use-theme.cjs","sources":["../../src/hooks/use-theme.ts"],"sourcesContent":["import { createContext, useContext, useEffect, useState } from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\nexport type ResolvedTheme = \"light\" | \"dark\";\n\nexport type ThemeContextValue = {\n theme: Theme;\n resolvedTheme: ResolvedTheme;\n setTheme: (next: Theme) => void;\n};\n\nexport const THEME_STORAGE_KEY = \"clicky-ui-theme\";\nconst DATA_ATTR = \"data-theme\";\n\nexport const ThemeContext = createContext<ThemeContextValue | null>(null);\n\nfunction prefersDark(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\n\nexport function readStoredTheme(): Theme {\n if (typeof window === \"undefined\") return \"system\";\n const raw = window.localStorage.getItem(THEME_STORAGE_KEY);\n return raw === \"light\" || raw === \"dark\" || raw === \"system\" ? raw : \"system\";\n}\n\nexport function resolveTheme(theme: Theme): ResolvedTheme {\n if (theme === \"system\") return prefersDark() ? \"dark\" : \"light\";\n return theme;\n}\n\nexport function applyTheme(resolved: ResolvedTheme): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.setAttribute(DATA_ATTR, resolved);\n}\n\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used inside <ThemeProvider>\");\n return ctx;\n}\n\nexport function useOptionalTheme(): ThemeContextValue | null {\n return useContext(ThemeContext);\n}\n\nexport function useResolvedTheme(override?: Theme): ResolvedTheme {\n const ctx = useOptionalTheme();\n const [systemResolved, setSystemResolved] = useState<ResolvedTheme>(() =>\n prefersDark() ? \"dark\" : \"light\",\n );\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => setSystemResolved(mq.matches ? \"dark\" : \"light\");\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n }, []);\n\n if (override && override !== \"system\") return override;\n if (override === \"system\") return systemResolved;\n if (ctx) return ctx.resolvedTheme;\n return systemResolved;\n}\n"],"names":["createContext","useContext","useState","useEffect"],"mappings":";;;AAWO,MAAM,oBAAoB;AACjC,MAAM,YAAY;AAEX,MAAM,eAAeA,MAAAA,cAAwC,IAAI;AAExE,SAAS,cAAuB;AAC9B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO,OAAO,WAAW,8BAA8B,EAAE;AAC3D;AAEO,SAAS,kBAAyB;AACvC,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,QAAM,MAAM,OAAO,aAAa,QAAQ,iBAAiB;AACzD,SAAO,QAAQ,WAAW,QAAQ,UAAU,QAAQ,WAAW,MAAM;AACvE;AAEO,SAAS,aAAa,OAA6B;AACxD,MAAI,UAAU,SAAU,QAAO,YAAA,IAAgB,SAAS;AACxD,SAAO;AACT;AAEO,SAAS,WAAW,UAA+B;AACxD,MAAI,OAAO,aAAa,YAAa;AACrC,WAAS,gBAAgB,aAAa,WAAW,QAAQ;AAC3D;AAEO,SAAS,WAA8B;AAC5C,QAAM,MAAMC,MAAAA,WAAW,YAAY;AACnC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8CAA8C;AACxE,SAAO;AACT;AAEO,SAAS,mBAA6C;AAC3D,SAAOA,MAAAA,WAAW,YAAY;AAChC;AAEO,SAAS,iBAAiB,UAAiC;AAChE,QAAM,MAAM,iBAAA;AACZ,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,MAAAA;AAAAA,IAAwB,MAClE,YAAA,IAAgB,SAAS;AAAA,EAAA;AAG3BC,QAAAA,UAAU,MAAM;AACd,QAAI,OAAO,WAAW,YAAa;AACnC,UAAM,KAAK,OAAO,WAAW,8BAA8B;AAC3D,UAAM,WAAW,MAAM,kBAAkB,GAAG,UAAU,SAAS,OAAO;AACtE,OAAG,iBAAiB,UAAU,QAAQ;AACtC,WAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,EACxD,GAAG,CAAA,CAAE;AAEL,MAAI,YAAY,aAAa,SAAU,QAAO;AAC9C,MAAI,aAAa,SAAU,QAAO;AAClC,MAAI,YAAY,IAAI;AACpB,SAAO;AACT;;;;;;;;;"}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
1
|
export type Theme = "light" | "dark" | "system";
|
|
3
2
|
export type ResolvedTheme = "light" | "dark";
|
|
4
|
-
type ThemeContextValue = {
|
|
3
|
+
export type ThemeContextValue = {
|
|
5
4
|
theme: Theme;
|
|
6
5
|
resolvedTheme: ResolvedTheme;
|
|
7
6
|
setTheme: (next: Theme) => void;
|
|
8
7
|
};
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const THEME_STORAGE_KEY = "clicky-ui-theme";
|
|
9
|
+
export declare const ThemeContext: import('react').Context<ThemeContextValue | null>;
|
|
10
|
+
export declare function readStoredTheme(): Theme;
|
|
11
|
+
export declare function resolveTheme(theme: Theme): ResolvedTheme;
|
|
12
|
+
export declare function applyTheme(resolved: ResolvedTheme): void;
|
|
15
13
|
export declare function useTheme(): ThemeContextValue;
|
|
16
14
|
export declare function useOptionalTheme(): ThemeContextValue | null;
|
|
17
15
|
export declare function useResolvedTheme(override?: Theme): ResolvedTheme;
|
|
18
|
-
export {};
|
|
19
16
|
//# sourceMappingURL=use-theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../src/hooks/use-theme.
|
|
1
|
+
{"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../src/hooks/use-theme.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAGnD,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAO1E,wBAAgB,eAAe,IAAI,KAAK,CAIvC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAGxD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAGxD;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C;AAED,wBAAgB,gBAAgB,IAAI,iBAAiB,GAAG,IAAI,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,aAAa,CAkBhE"}
|