@launchdarkly/toolbar 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ export declare const clearButton: string;
2
+ export declare const smallIcon: string;
@@ -0,0 +1,8 @@
1
+ interface ClearButtonProps {
2
+ label: string;
3
+ count: number;
4
+ onClick: () => void;
5
+ isLoading?: boolean;
6
+ }
7
+ export declare function ClearButton({ label, count, onClick, isLoading }: ClearButtonProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare const container: string;
2
+ export declare const filterButton: string;
3
+ export declare const bottomRow: string;
4
+ export declare const statusText: string;
@@ -0,0 +1,10 @@
1
+ export interface FilterOptionsProps {
2
+ totalFlags: number;
3
+ filteredFlags: number;
4
+ totalOverriddenFlags: number;
5
+ starredCount: number;
6
+ onClearOverrides?: () => void;
7
+ onClearStarred?: () => void;
8
+ isLoading?: boolean;
9
+ }
10
+ export declare function FilterOptions(props: FilterOptionsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ export declare const FILTER_MODES: {
2
+ readonly ALL: "all";
3
+ readonly OVERRIDES: "overrides";
4
+ readonly STARRED: "starred";
5
+ };
6
+ export type FlagFilterMode = (typeof FILTER_MODES)[keyof typeof FILTER_MODES];
7
+ interface FlagFilterOptionsContextType {
8
+ activeFilters: Set<FlagFilterMode>;
9
+ onFilterToggle: (filter: FlagFilterMode) => void;
10
+ }
11
+ export declare const FlagFilterOptionsContext: import("react").Context<FlagFilterOptionsContextType | undefined>;
12
+ export declare const useFlagFilterOptions: () => FlagFilterOptionsContextType;
13
+ export {};
@@ -4,6 +4,7 @@ interface LocalObjectFlagControlListItemProps {
4
4
  handleClearOverride: (key: string) => void;
5
5
  handleOverride: (flagKey: string, value: any) => void;
6
6
  handleHeightChange: (height: number) => void;
7
+ onToggleStarred?: (flagKey: string) => void;
7
8
  flag: LocalFlag | EnhancedFlag;
8
9
  size: number;
9
10
  start: number;
@@ -0,0 +1,2 @@
1
+ export declare const starButton: string;
2
+ export declare const starIcon: string;
@@ -0,0 +1,7 @@
1
+ interface StarButtonProps {
2
+ flagKey: string;
3
+ isStarred: boolean;
4
+ onToggle: (flagKey: string) => void;
5
+ }
6
+ export declare function StarButton({ flagKey, isStarred, onToggle }: StarButtonProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,5 @@
1
+ interface IconProps {
2
+ className?: string;
3
+ }
4
+ export declare function CancelIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ interface IconProps {
2
+ className?: string;
3
+ }
4
+ export declare function StarIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ interface IconProps {
2
+ className?: string;
3
+ }
4
+ export declare function StarOutlineIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -9,4 +9,6 @@ export { ToggleOffIcon } from './ToggleOffIcon';
9
9
  export { GearIcon } from './GearIcon';
10
10
  export { DeleteIcon } from './DeleteIcon';
11
11
  export { CancelCircleIcon } from './CancelCircleIcon';
12
- export { XIcon } from './XIcon';
12
+ export { CancelIcon } from './CancelIcon';
13
+ export { StarIcon } from './StarIcon';
14
+ export { StarOutlineIcon } from './StarOutlineIcon';
@@ -7,3 +7,5 @@ export { LaunchDarklyIcon } from './icons/LaunchDarklyIcon';
7
7
  export { StatusDot } from './StatusDot';
8
8
  export { TabContentRenderer } from './TabContentRenderer';
9
9
  export { ErrorMessage } from './ErrorMessage';
10
+ export { type FlagFilterMode, FlagFilterOptionsContext, useFlagFilterOptions, } from './FilterOptions/useFlagFilterOptions';
11
+ export { FilterOptions } from './FilterOptions/FilterOptions';
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ type StarredFlagsContextType = {
3
+ toggleStarred: (flagKey: string) => void;
4
+ isStarred: (flagKey: string) => boolean;
5
+ clearAllStarred: () => void;
6
+ starredCount: number;
7
+ };
8
+ export declare function StarredFlagsProvider({ children }: {
9
+ children: React.ReactNode;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ export declare function useStarredFlags(): StarredFlagsContextType;
12
+ export {};
@@ -3,3 +3,4 @@ export { SearchProvider, useSearchContext } from './SearchProvider';
3
3
  export { ToolbarUIProvider, useToolbarUIContext } from './ToolbarUIProvider';
4
4
  export { FlagSdkOverrideProvider, useFlagSdkOverrideContext, type LocalFlag, type FlagSdkOverrideContextType, } from './FlagSdkOverrideProvider';
5
5
  export { AnalyticsProvider, useAnalytics } from './AnalyticsProvider';
6
+ export { StarredFlagsProvider, useStarredFlags } from './StarredFlagsProvider';
@@ -3,6 +3,7 @@ export declare const TOOLBAR_STORAGE_KEYS: {
3
3
  readonly SETTINGS: "ld-toolbar-settings";
4
4
  readonly DISABLED: "ld-toolbar-disabled";
5
5
  readonly PROJECT: "ld-toolbar-project";
6
+ readonly STARRED_FLAGS: "ld-toolbar-starred-flags";
6
7
  };
7
8
  export interface ToolbarSettings {
8
9
  position: ToolbarPosition;
@@ -16,3 +17,5 @@ export declare function saveToolbarAutoCollapse(autoCollapse: boolean): void;
16
17
  export declare function loadToolbarAutoCollapse(): boolean;
17
18
  export declare function saveReloadOnFlagChange(isReloadOnFlagChange: boolean): void;
18
19
  export declare function loadReloadOnFlagChange(): boolean;
20
+ export declare function loadStarredFlags(): Set<string>;
21
+ export declare function saveStarredFlags(starredFlags: Set<string>): void;
@@ -40,13 +40,17 @@ export declare class ToolbarAnalytics {
40
40
  */
41
41
  trackFlagOverride(flagKey: string, value: unknown, action: 'set' | 'remove' | 'clear_all'): void;
42
42
  /**
43
- * Track opening a flag deeplink
43
+ * Track starred flag events
44
44
  */
45
- trackOpenFlagDeeplink(flagKey: string, baseUrl: string): void;
45
+ trackStarredFlag(flagKey: string, action: 'star' | 'unstar' | 'clear_all'): void;
46
+ /**
47
+ * Track filter changes
48
+ */
49
+ trackFilterChange(filter: 'all' | 'overrides' | 'starred', action: 'selected' | 'deselected'): void;
46
50
  /**
47
- * Track 'Show overrides only' clicks
51
+ * Track opening a flag deeplink
48
52
  */
49
- trackShowOverridesOnlyClick(enabled: boolean): void;
53
+ trackOpenFlagDeeplink(flagKey: string, baseUrl: string): void;
50
54
  /**
51
55
  * Track Event clicks
52
56
  */
package/dist/index.cjs CHANGED
@@ -553,7 +553,7 @@ async function lazyLoad(signal, url) {
553
553
  }
554
554
  }
555
555
  var package_namespaceObject = {
556
- rE: "1.1.2"
556
+ rE: "1.2.0"
557
557
  };
558
558
  function useLaunchDarklyToolbar(args) {
559
559
  const { toolbarBundleUrl, enabled, ...initConfig } = args;
package/dist/js/index.js CHANGED
@@ -519,7 +519,7 @@ async function lazyLoad(signal, url) {
519
519
  }
520
520
  }
521
521
  var package_namespaceObject = {
522
- rE: "1.1.2"
522
+ rE: "1.2.0"
523
523
  };
524
524
  function useLaunchDarklyToolbar(args) {
525
525
  const { toolbarBundleUrl, enabled, ...initConfig } = args;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@launchdarkly/toolbar",
4
- "version": "1.1.2",
4
+ "version": "1.2.0",
5
5
  "description": "A React component that provides a developer-friendly toolbar for interacting with LaunchDarkly during development",
6
6
  "keywords": [
7
7
  "launchdarkly",
@@ -49,22 +49,22 @@
49
49
  "@codemirror/commands": "^6.10.0",
50
50
  "@codemirror/lang-json": "^6.0.2",
51
51
  "@codemirror/language": "^6.11.3",
52
- "@codemirror/lint": "^6.9.1",
52
+ "@codemirror/lint": "^6.9.2",
53
53
  "@codemirror/state": "^6.5.2",
54
- "@codemirror/view": "^6.38.2",
55
- "@launchpad-ui/components": "^0.16.12",
54
+ "@codemirror/view": "^6.38.6",
55
+ "@launchpad-ui/components": "^0.17.5",
56
56
  "@launchpad-ui/tokens": "^0.15.1",
57
- "@lezer/highlight": "^1.2.1",
57
+ "@lezer/highlight": "^1.2.3",
58
58
  "@react-aria/focus": "^3.21.2",
59
59
  "@react-stately/flags": "^3.1.2",
60
- "@rsbuild/core": "^1.6.0",
61
- "@rsbuild/plugin-react": "^1.4.1",
60
+ "@rsbuild/core": "^1.6.3",
61
+ "@rsbuild/plugin-react": "^1.4.2",
62
62
  "@rslib/core": "^0.17.0",
63
- "@storybook/addon-docs": "^10.0.1",
63
+ "@storybook/addon-docs": "^10.0.7",
64
64
  "@storybook/addon-essentials": "^9.0.0-alpha.12",
65
65
  "@storybook/addon-interactions": "^9.0.0-alpha.10",
66
66
  "@storybook/addon-links": "^10.0.2",
67
- "@storybook/addon-onboarding": "^10.0.4",
67
+ "@storybook/addon-onboarding": "^10.0.6",
68
68
  "@storybook/blocks": "^9.0.0-alpha.17",
69
69
  "@storybook/react": "^10.0.4",
70
70
  "@storybook/react-vite": "^9.0.5",
@@ -80,17 +80,17 @@
80
80
  "@vanilla-extract/webpack-plugin": "^2.3.22",
81
81
  "@vitest/coverage-v8": "4.0.5",
82
82
  "css-loader": "^7.1.2",
83
- "jsdom": "^27.0.1",
83
+ "jsdom": "^27.2.0",
84
84
  "launchdarkly-js-client-sdk": "^3.9.0",
85
85
  "motion": "^12.19.2",
86
86
  "oxlint": "^1.24.0",
87
- "react": "^19.1.1",
88
- "react-dom": "^19.1.1",
87
+ "react": "^19.2.0",
88
+ "react-dom": "^19.2.0",
89
89
  "storybook": "^9.1.16",
90
- "storybook-addon-rslib": "^2.1.2",
90
+ "storybook-addon-rslib": "^2.1.4",
91
91
  "storybook-react-rsbuild": "^2.1.2",
92
92
  "typescript": "^5.9.3",
93
- "vitest": "^4.0.7"
93
+ "vitest": "^4.0.8"
94
94
  },
95
95
  "peerDependencies": {
96
96
  "launchdarkly-js-client-sdk": ">=3.9.0 <4.0.0",
@@ -1,5 +0,0 @@
1
- interface IconProps {
2
- className?: string;
3
- }
4
- export declare function XIcon({ className }: IconProps): import("react/jsx-runtime").JSX.Element;
5
- export {};