@trops/dash-core 0.1.569 → 0.1.571

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/index.esm.js CHANGED
@@ -2,7 +2,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
2
  import _typeof from '@babel/runtime/helpers/typeof';
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import * as DashReact from '@trops/dash-react';
5
- import { isObject, ThemeContext, Modal, FontAwesomeIcon, deepCopy, MainSection, getUUID, getStylesForItem, themeObjects, Heading, SearchInput, ButtonIcon, SubHeading3, InputText, Button, Tag, Button3, Button2, Paragraph, Sidebar, Panel, Stepper, Tag3, Card2, Card3, Heading3, MenuItem3, FormLabel, SelectMenu, Switch, SelectInput, CodeEditorVS, SettingsModal, SubHeading2, tailwindHeightFractions, Menu3, Panel3, ButtonIcon2, DropdownPanel, MenuItem2, DragComponent, ConfirmationModal, DropComponent, getStyleName, capitalizeFirstLetter, colorTypes, isHexColor, deriveShades, TAILWIND_PALETTE, getCSSStyleForClassname, Panel2, Heading2, SubHeading, Paragraph2, Paragraph3, MenuItem, Tag2, ButtonIcon3, DashPanel, colorNames, shades, themeVariants, Tabs3, DataList, Checkbox, StatCard, Card, Tabs, Accordion, Alert, Toast, ProgressBar, Toggle, Breadcrumbs, Tabs2, Accordion2, Alert2, Toast2, ProgressBar2, Toggle2, Breadcrumbs2, Accordion3, Alert3, Toast3, ProgressBar3, Toggle3, Breadcrumbs3, ThemeFromUrlPane, TextArea, CodeEditorInline, Icon2, AlgoliaSearchBox, CommandPalette, useSidebar, Divider, Caption2, Caption, Caption3, EmptyState, Navbar, withRouter, Menu as Menu$1 } from '@trops/dash-react';
5
+ import { isObject, ThemeContext, Modal, FontAwesomeIcon, deepCopy, MainSection, getUUID, getStylesForItem, themeObjects, Heading, SearchInput, ButtonIcon, SubHeading3, InputText, Button, Tag, Button3, Button2, Paragraph, Sidebar, Panel, Stepper, Tag3, Card2, Card3, Heading3, MenuItem3, FormLabel, SelectMenu, Switch, SelectInput, CodeEditorVS, SettingsModal, SubHeading2, tailwindHeightFractions, Menu3, Panel3, ButtonIcon2, DropdownPanel, MenuItem2, DragComponent, ConfirmationModal, DropComponent, getStyleName, capitalizeFirstLetter, colorTypes, isHexColor, deriveShades, TAILWIND_PALETTE, getCSSStyleForClassname, Panel2, Heading2, SubHeading, Paragraph2, Paragraph3, MenuItem, Tag2, ButtonIcon3, normalizeHex, contrastRatio, Caption2, Caption, getColorFamilies, getCuratedColorGrid, DashPanel, colorNames, shades, themeVariants, Tabs3, DataList, Checkbox, StatCard, Card, Tabs, Accordion, Alert, Toast, ProgressBar, Toggle, Breadcrumbs, Tabs2, Accordion2, Alert2, Toast2, ProgressBar2, Toggle2, Breadcrumbs2, Accordion3, Alert3, Toast3, ProgressBar3, Toggle3, Breadcrumbs3, ThemeFromUrlPane, TextArea, CodeEditorInline, Icon2, AlgoliaSearchBox, CommandPalette, useSidebar, Divider, Caption3, EmptyState, Navbar, withRouter, Menu as Menu$1 } from '@trops/dash-react';
6
6
  export * from '@trops/dash-react';
7
7
  export { ThemeContext } from '@trops/dash-react';
8
8
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
@@ -35939,6 +35939,20 @@ function getThemePresets() {
35939
35939
  return [buildRawTheme("Ocean Depth", "blue", "cyan", "teal", "slate"), buildRawTheme("Sunset Ember", "orange", "rose", "amber", "stone"), buildRawTheme("Forest Canopy", "green", "emerald", "lime", "gray"), buildRawTheme("Arctic Night", "slate", "sky", "indigo", "zinc"), buildRawTheme("Royal Amethyst", "purple", "violet", "fuchsia", "gray"), buildRawTheme("Warm Earth", "stone", "amber", "orange", "neutral"), buildRawTheme("Cyber Pulse", "cyan", "blue", "violet", "slate"), buildRawTheme("Rose Garden", "rose", "pink", "fuchsia", "gray"), buildRawTheme("Golden Hour", "amber", "yellow", "orange", "stone"), buildRawTheme("Midnight Sky", "indigo", "blue", "violet", "slate"), buildRawTheme("Spring Meadow", "emerald", "lime", "green", "gray"), buildRawTheme("Coral Reef", "red", "orange", "pink", "zinc"), buildRawTheme("Nordic Ice", "sky", "cyan", "blue", "slate"), buildRawTheme("Twilight Bloom", "violet", "purple", "pink", "gray"), buildRawTheme("Desert Sand", "amber", "orange", "stone", "neutral")];
35940
35940
  }
35941
35941
 
35942
+ /**
35943
+ * Brand presets — curated hex palettes mirroring well-known
35944
+ * products. Surfaced in the theme picker so users can pick
35945
+ * familiar brand identities in one click. Hex values flow
35946
+ * through the arbitrary-color-themes pipeline (PRD US-006).
35947
+ *
35948
+ * Each preset spans all four channels (primary, secondary,
35949
+ * tertiary, neutral). When applied, every theme token resolves
35950
+ * to a brand-equivalent shade via the cssVars map.
35951
+ */
35952
+ function getBrandPresets() {
35953
+ return [buildRawTheme("Slack Brand", "#4A154B", "#36C5F0", "#ECB22E", "#BCBEC0"), buildRawTheme("Notion Brand", "#2F3437", "#9B6A8C", "#D4845A", "#C1B5A7"), buildRawTheme("GitHub Brand", "#0D1117", "#58A6FF", "#F0883E", "#21262D"), buildRawTheme("Stripe Brand", "#635BFF", "#00D4FF", "#FFD600", "#525F7F"), buildRawTheme("Linear Brand", "#5E6AD2", "#B07FD0", "#E2A8F5", "#1F2026"), buildRawTheme("Discord Brand", "#5865F2", "#57F287", "#FEE75C", "#36393F"), buildRawTheme("Vercel Brand", "#000000", "#0070F3", "#FF0080", "#888888"), buildRawTheme("Figma Brand", "#F24E1E", "#A259FF", "#1ABCFE", "#2C2C2C")];
35954
+ }
35955
+
35942
35956
  // ─── Random Generation ───────────────────────────────────────────────────
35943
35957
 
35944
35958
  function generateRandomTheme() {
@@ -36835,6 +36849,133 @@ var PreviewColorsPane = function PreviewColorsPane(_ref) {
36835
36849
  }) : null;
36836
36850
  };
36837
36851
 
36852
+ var AA_RATIO = 4.5;
36853
+ var CustomHexColorPane = function CustomHexColorPane(_ref) {
36854
+ var onApply = _ref.onApply,
36855
+ _ref$label = _ref.label,
36856
+ label = _ref$label === void 0 ? "Custom hex color" : _ref$label;
36857
+ var _useState = useState(""),
36858
+ _useState2 = _slicedToArray(_useState, 2),
36859
+ input = _useState2[0],
36860
+ setInput = _useState2[1];
36861
+ var _useState3 = useState(null),
36862
+ _useState4 = _slicedToArray(_useState3, 2),
36863
+ error = _useState4[0],
36864
+ setError = _useState4[1];
36865
+ var normalized = useMemo(function () {
36866
+ return normalizeHex(input);
36867
+ }, [input]);
36868
+ var isValid = !!normalized;
36869
+
36870
+ // Contrast vs. white — the most common "text on a colored fill"
36871
+ // case for primary buttons / active channels. Low contrast means
36872
+ // light text on the picked color will be hard to read.
36873
+ var contrastVsWhite = useMemo(function () {
36874
+ return isValid ? contrastRatio(normalized, "#ffffff") : null;
36875
+ }, [normalized, isValid]);
36876
+ var contrastVsBlack = useMemo(function () {
36877
+ return isValid ? contrastRatio(normalized, "#000000") : null;
36878
+ }, [normalized, isValid]);
36879
+ var bestContrast = contrastVsWhite ? Math.max(contrastVsWhite, contrastVsBlack) : null;
36880
+ var warning = bestContrast !== null && bestContrast < AA_RATIO ? "Best contrast ".concat(bestContrast.toFixed(1), ":1 \u2014 below WCAG AA target (4.5:1). Text overlaid on this color may be hard to read.") : null;
36881
+ function handleApply() {
36882
+ if (!normalized) {
36883
+ setError("Invalid hex (try #4A154B)");
36884
+ return;
36885
+ }
36886
+ setError(null);
36887
+ onApply(normalized);
36888
+ setInput("");
36889
+ }
36890
+ function handleKeyDown(e) {
36891
+ if (e.key === "Enter" && isValid) {
36892
+ e.preventDefault();
36893
+ handleApply();
36894
+ }
36895
+ }
36896
+ return /*#__PURE__*/jsxs("div", {
36897
+ className: "flex flex-col gap-2 p-3 border-t border-gray-700",
36898
+ children: [/*#__PURE__*/jsx("span", {
36899
+ className: "text-xs uppercase font-bold tracking-wider text-gray-400",
36900
+ children: label
36901
+ }), /*#__PURE__*/jsxs("div", {
36902
+ className: "flex flex-row items-center gap-2",
36903
+ children: [/*#__PURE__*/jsx(InputText, {
36904
+ value: input,
36905
+ onChange: function onChange(value) {
36906
+ var _value$target;
36907
+ // dispatchInputChange unwraps the event to a string
36908
+ setInput(typeof value === "string" ? value : (value === null || value === void 0 || (_value$target = value.target) === null || _value$target === void 0 ? void 0 : _value$target.value) || "");
36909
+ setError(null);
36910
+ },
36911
+ onKeyDown: handleKeyDown,
36912
+ placeholder: "#4A154B"
36913
+ }), /*#__PURE__*/jsx("div", {
36914
+ className: "w-10 h-10 rounded flex-shrink-0",
36915
+ style: {
36916
+ backgroundColor: normalized || "transparent",
36917
+ border: "1px solid rgba(255,255,255,0.15)"
36918
+ },
36919
+ "aria-label": "Color preview"
36920
+ }), /*#__PURE__*/jsx(Button, {
36921
+ title: "Apply",
36922
+ onClick: handleApply,
36923
+ disabled: !isValid
36924
+ })]
36925
+ }), error && /*#__PURE__*/jsx(Caption2, {
36926
+ text: error
36927
+ }), warning && /*#__PURE__*/jsx(Caption, {
36928
+ text: warning
36929
+ })]
36930
+ });
36931
+ };
36932
+
36933
+ var CategorizedColorGrid = function CategorizedColorGrid(_ref) {
36934
+ var onSelect = _ref.onSelect,
36935
+ _ref$selectedHex = _ref.selectedHex,
36936
+ selectedHex = _ref$selectedHex === void 0 ? null : _ref$selectedHex;
36937
+ var families = getColorFamilies();
36938
+ var _useState = useState(families[0]),
36939
+ _useState2 = _slicedToArray(_useState, 2),
36940
+ activeFamily = _useState2[0],
36941
+ setActiveFamily = _useState2[1];
36942
+ var colors = getCuratedColorGrid(activeFamily);
36943
+ return /*#__PURE__*/jsxs("div", {
36944
+ className: "flex flex-col gap-3 p-3",
36945
+ children: [/*#__PURE__*/jsx("div", {
36946
+ className: "flex flex-row gap-2 flex-wrap",
36947
+ children: families.map(function (family) {
36948
+ var isActive = activeFamily === family;
36949
+ return /*#__PURE__*/jsx("button", {
36950
+ type: "button",
36951
+ onClick: function onClick() {
36952
+ return setActiveFamily(family);
36953
+ },
36954
+ className: "px-3 py-1 rounded-full text-xs font-medium transition-colors ".concat(isActive ? "bg-blue-600 text-white" : "bg-gray-700 text-gray-300 hover:bg-gray-600"),
36955
+ children: family
36956
+ }, family);
36957
+ })
36958
+ }), /*#__PURE__*/jsx("div", {
36959
+ className: "grid grid-cols-6 gap-1",
36960
+ children: colors.map(function (hex) {
36961
+ var isSelected = selectedHex && hex.toLowerCase() === selectedHex.toLowerCase();
36962
+ return /*#__PURE__*/jsx("button", {
36963
+ type: "button",
36964
+ onClick: function onClick() {
36965
+ return onSelect(hex);
36966
+ },
36967
+ title: hex,
36968
+ className: "aspect-square rounded transition-transform hover:scale-110 focus:scale-110 focus:outline-none ".concat(isSelected ? "ring-2 ring-white scale-110" : ""),
36969
+ style: {
36970
+ backgroundColor: hex
36971
+ },
36972
+ "aria-label": "Select color ".concat(hex)
36973
+ }, hex);
36974
+ })
36975
+ })]
36976
+ });
36977
+ };
36978
+
36838
36979
  var AvailableColorsGridPane = function AvailableColorsGridPane(_ref) {
36839
36980
  var _ref$currentColor = _ref.currentColor,
36840
36981
  currentColor = _ref$currentColor === void 0 ? null : _ref$currentColor,
@@ -36911,7 +37052,28 @@ var AvailableColorsGridPane = function AvailableColorsGridPane(_ref) {
36911
37052
  }), /*#__PURE__*/jsx(DashPanel.Body, {
36912
37053
  scrollable: true,
36913
37054
  space: true,
36914
- children: /*#__PURE__*/jsx("div", {
37055
+ children: shade !== null ? /*#__PURE__*/jsxs(Fragment, {
37056
+ children: [/*#__PURE__*/jsx(CategorizedColorGrid, {
37057
+ onSelect: function onSelect(hex) {
37058
+ return handleChooseColor({
37059
+ colorName: hex,
37060
+ colorType: colorType,
37061
+ shade: shade || 500,
37062
+ panelType: "main"
37063
+ });
37064
+ }
37065
+ }), /*#__PURE__*/jsx(CustomHexColorPane, {
37066
+ onApply: function onApply(hex) {
37067
+ return handleChooseColor({
37068
+ colorName: hex,
37069
+ colorType: colorType,
37070
+ shade: shade || 500,
37071
+ panelType: "main"
37072
+ });
37073
+ },
37074
+ label: "Custom hex for ".concat(colorType || "channel")
37075
+ })]
37076
+ }) : /*#__PURE__*/jsx("div", {
36915
37077
  className: "flex flex-col space-y-1",
36916
37078
  children: renderAvailableColors()
36917
37079
  })
@@ -38380,23 +38542,41 @@ var ThemePickerGridPane = function ThemePickerGridPane(_ref) {
38380
38542
  themeVariant = _useContext.themeVariant;
38381
38543
  function renderMenuItem(tk) {
38382
38544
  var displayTheme = themes[tk][themeVariant];
38383
- var colors = [{
38384
- colorName: displayTheme["secondary"],
38545
+ // Read inline CSS color values from `cssValue` (v0.1.569+) so
38546
+ // preview swatches render correctly for BOTH named-color and
38547
+ // hex (brand-preset) themes. For hex themes, the className path
38548
+ // resolves to `bg-[var(--secondary-700)]` which depends on the
38549
+ // active theme's CSS variables — those aren't injected for
38550
+ // OTHER themes shown in the picker grid. Inline cssValue
38551
+ // sidesteps that limitation.
38552
+ var cssValue = displayTheme.cssValue || {};
38553
+ var swatches = [{
38385
38554
  type: "secondary",
38386
- color: displayTheme["bg-secondary-medium"]
38555
+ value: cssValue["bg-secondary-medium"],
38556
+ className: displayTheme["bg-secondary-medium"]
38387
38557
  }, {
38388
- colorName: displayTheme["tertiary"],
38389
38558
  type: "tertiary",
38390
- color: displayTheme["bg-tertiary-medium"]
38559
+ value: cssValue["bg-tertiary-medium"],
38560
+ className: displayTheme["bg-tertiary-medium"]
38391
38561
  }, {
38392
- colorName: displayTheme["neutral"],
38393
38562
  type: "neutral",
38394
- color: displayTheme["bg-neutral-light"]
38563
+ value: cssValue["bg-neutral-light"],
38564
+ className: displayTheme["bg-neutral-light"]
38395
38565
  }];
38396
- return colors.map(function (color) {
38566
+ return swatches.map(function (swatch) {
38567
+ // Prefer cssValue (works for any theme). Fall back to className
38568
+ // for pre-v0.1.569 themes without a cssValue map.
38569
+ if (swatch.value) {
38570
+ return /*#__PURE__*/jsx("div", {
38571
+ className: "rounded h-20 w-full",
38572
+ style: {
38573
+ backgroundColor: swatch.value
38574
+ }
38575
+ }, "theme-grid-".concat(swatch.type));
38576
+ }
38397
38577
  return /*#__PURE__*/jsx("div", {
38398
- className: "rounded ".concat(color["color"], " h-20 w-full")
38399
- }, "theme-grid-".concat(color.type));
38578
+ className: "rounded ".concat(swatch.className, " h-20 w-full")
38579
+ }, "theme-grid-".concat(swatch.type));
38400
38580
  });
38401
38581
  }
38402
38582
  function renderCurrentThemes() {
@@ -38556,15 +38736,30 @@ var GENERATE_MODES = {
38556
38736
 
38557
38737
  // ─── Preset Gallery ──────────────────────────────────────────────────────
38558
38738
 
38559
- var PresetCard = function PresetCard(_ref) {
38560
- var preset = _ref.preset,
38561
- onSelect = _ref.onSelect,
38562
- _ref$selected = _ref.selected,
38563
- selected = _ref$selected === void 0 ? false : _ref$selected;
38564
- var colors = [preset.primary, preset.secondary, preset.tertiary];
38565
- var swatchClasses = colors.map(function (c) {
38566
- return "bg-".concat(c, "-500");
38739
+ // Render a swatch for a preset's channel value. Handles both Tailwind
38740
+ // named colors (`"blue"` → `bg-blue-500`) and arbitrary-color-themes
38741
+ // hex values (`"#4A154B"` → inline style). Used by brand presets which
38742
+ // carry hex palettes.
38743
+ var PresetSwatch = function PresetSwatch(_ref) {
38744
+ var color = _ref.color;
38745
+ if (isHexColor(color)) {
38746
+ return /*#__PURE__*/jsx("div", {
38747
+ className: "h-6 flex-1 rounded",
38748
+ style: {
38749
+ backgroundColor: normalizeHex(color) || color
38750
+ }
38751
+ });
38752
+ }
38753
+ return /*#__PURE__*/jsx("div", {
38754
+ className: "h-6 flex-1 rounded bg-".concat(color, "-500")
38567
38755
  });
38756
+ };
38757
+ var PresetCard = function PresetCard(_ref2) {
38758
+ var preset = _ref2.preset,
38759
+ onSelect = _ref2.onSelect,
38760
+ _ref2$selected = _ref2.selected,
38761
+ selected = _ref2$selected === void 0 ? false : _ref2$selected;
38762
+ var colors = [preset.primary, preset.secondary, preset.tertiary];
38568
38763
  return /*#__PURE__*/jsxs("div", {
38569
38764
  className: "flex flex-col gap-2 p-3 rounded-lg cursor-pointer transition-all bg-white/5 hover:bg-white/10 ".concat(selected ? "ring-2 ring-blue-500" : "hover:ring-2 hover:ring-blue-500"),
38570
38765
  onClick: function onClick() {
@@ -38572,9 +38767,9 @@ var PresetCard = function PresetCard(_ref) {
38572
38767
  },
38573
38768
  children: [/*#__PURE__*/jsx("div", {
38574
38769
  className: "flex flex-row gap-1",
38575
- children: swatchClasses.map(function (cls, i) {
38576
- return /*#__PURE__*/jsx("div", {
38577
- className: "h-6 flex-1 rounded ".concat(cls)
38770
+ children: colors.map(function (c, i) {
38771
+ return /*#__PURE__*/jsx(PresetSwatch, {
38772
+ color: c
38578
38773
  }, i);
38579
38774
  })
38580
38775
  }), /*#__PURE__*/jsx("span", {
@@ -38583,13 +38778,14 @@ var PresetCard = function PresetCard(_ref) {
38583
38778
  })]
38584
38779
  });
38585
38780
  };
38586
- var PresetGallery = function PresetGallery(_ref2) {
38587
- var onSelect = _ref2.onSelect,
38588
- _ref2$selectedPresetI = _ref2.selectedPresetId,
38589
- selectedPresetId = _ref2$selectedPresetI === void 0 ? null : _ref2$selectedPresetI,
38590
- _ref2$inline = _ref2.inline,
38591
- inline = _ref2$inline === void 0 ? false : _ref2$inline;
38781
+ var PresetGallery = function PresetGallery(_ref3) {
38782
+ var onSelect = _ref3.onSelect,
38783
+ _ref3$selectedPresetI = _ref3.selectedPresetId,
38784
+ selectedPresetId = _ref3$selectedPresetI === void 0 ? null : _ref3$selectedPresetI,
38785
+ _ref3$inline = _ref3.inline,
38786
+ inline = _ref3$inline === void 0 ? false : _ref3$inline;
38592
38787
  var presets = getThemePresets();
38788
+ var brandPresets = getBrandPresets();
38593
38789
  return /*#__PURE__*/jsxs("div", {
38594
38790
  className: inline ? "flex flex-col gap-4" : "flex flex-col gap-4 p-6 overflow-y-auto flex-1 min-h-0",
38595
38791
  children: [/*#__PURE__*/jsx("span", {
@@ -38604,16 +38800,28 @@ var PresetGallery = function PresetGallery(_ref2) {
38604
38800
  selected: selectedPresetId != null && preset.name === selectedPresetId
38605
38801
  }, i);
38606
38802
  })
38803
+ }), /*#__PURE__*/jsx("span", {
38804
+ className: "text-sm font-semibold opacity-50 mt-4",
38805
+ children: "Brand Presets"
38806
+ }), /*#__PURE__*/jsx("div", {
38807
+ className: "grid grid-cols-3 gap-3",
38808
+ children: brandPresets.map(function (preset, i) {
38809
+ return /*#__PURE__*/jsx(PresetCard, {
38810
+ preset: preset,
38811
+ onSelect: onSelect,
38812
+ selected: selectedPresetId != null && preset.name === selectedPresetId
38813
+ }, "brand-".concat(i));
38814
+ })
38607
38815
  })]
38608
38816
  });
38609
38817
  };
38610
38818
 
38611
38819
  // ─── Color Harmony Picker ────────────────────────────────────────────────
38612
38820
 
38613
- var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref3) {
38614
- var value = _ref3.value,
38615
- onChange = _ref3.onChange,
38616
- label = _ref3.label;
38821
+ var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref4) {
38822
+ var value = _ref4.value,
38823
+ onChange = _ref4.onChange,
38824
+ label = _ref4.label;
38617
38825
  return /*#__PURE__*/jsxs("div", {
38618
38826
  className: "flex flex-col gap-2",
38619
38827
  children: [/*#__PURE__*/jsx("span", {
@@ -38633,10 +38841,10 @@ var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref3) {
38633
38841
  })]
38634
38842
  });
38635
38843
  };
38636
- var PreviewSwatch = function PreviewSwatch(_ref4) {
38637
- var color = _ref4.color,
38638
- strategy = _ref4.strategy,
38639
- customColors = _ref4.customColors;
38844
+ var PreviewSwatch = function PreviewSwatch(_ref5) {
38845
+ var color = _ref5.color,
38846
+ strategy = _ref5.strategy,
38847
+ customColors = _ref5.customColors;
38640
38848
  var colors;
38641
38849
  if (strategy === "custom" && customColors) {
38642
38850
  colors = [customColors.primary, customColors.secondary, customColors.tertiary];
@@ -38659,10 +38867,10 @@ var PreviewSwatch = function PreviewSwatch(_ref4) {
38659
38867
  })
38660
38868
  });
38661
38869
  };
38662
- var ColorHarmonyPicker = function ColorHarmonyPicker(_ref5) {
38663
- var onGenerate = _ref5.onGenerate,
38664
- _ref5$inline = _ref5.inline,
38665
- inline = _ref5$inline === void 0 ? false : _ref5$inline;
38870
+ var ColorHarmonyPicker = function ColorHarmonyPicker(_ref6) {
38871
+ var onGenerate = _ref6.onGenerate,
38872
+ _ref6$inline = _ref6.inline,
38873
+ inline = _ref6$inline === void 0 ? false : _ref6$inline;
38666
38874
  var _useState = useState("blue"),
38667
38875
  _useState2 = _slicedToArray(_useState, 2),
38668
38876
  selectedColor = _useState2[0],
@@ -38756,12 +38964,12 @@ var ColorHarmonyPicker = function ColorHarmonyPicker(_ref5) {
38756
38964
 
38757
38965
  // ─── Wizard Components ──────────────────────────────────────────────────
38758
38966
 
38759
- var MethodCard = function MethodCard(_ref6) {
38760
- var icon = _ref6.icon,
38761
- title = _ref6.title,
38762
- subtitle = _ref6.subtitle,
38763
- selected = _ref6.selected,
38764
- onClick = _ref6.onClick;
38967
+ var MethodCard = function MethodCard(_ref7) {
38968
+ var icon = _ref7.icon,
38969
+ title = _ref7.title,
38970
+ subtitle = _ref7.subtitle,
38971
+ selected = _ref7.selected,
38972
+ onClick = _ref7.onClick;
38765
38973
  return /*#__PURE__*/jsxs("div", {
38766
38974
  className: "flex flex-col gap-1.5 p-3 rounded-lg cursor-pointer transition-all bg-white/5 hover:bg-white/10 ".concat(selected ? "ring-2 ring-blue-500 bg-white/10" : "hover:ring-1 hover:ring-white/20"),
38767
38975
  onClick: onClick,
@@ -38780,9 +38988,9 @@ var MethodCard = function MethodCard(_ref6) {
38780
38988
  })]
38781
38989
  });
38782
38990
  };
38783
- var RandomPreview = function RandomPreview(_ref7) {
38784
- var theme = _ref7.theme,
38785
- onRegenerate = _ref7.onRegenerate;
38991
+ var RandomPreview = function RandomPreview(_ref8) {
38992
+ var theme = _ref8.theme,
38993
+ onRegenerate = _ref8.onRegenerate;
38786
38994
  var colors = theme ? [theme.primary, theme.secondary, theme.tertiary] : [];
38787
38995
  return /*#__PURE__*/jsxs("div", {
38788
38996
  className: "flex flex-col gap-4",
@@ -38809,20 +39017,20 @@ var RandomPreview = function RandomPreview(_ref7) {
38809
39017
  })]
38810
39018
  });
38811
39019
  };
38812
- var ThemeQuickCreate = function ThemeQuickCreate(_ref8) {
38813
- var wizardName = _ref8.wizardName,
38814
- setWizardName = _ref8.setWizardName,
38815
- wizardMethod = _ref8.wizardMethod,
38816
- setWizardMethod = _ref8.setWizardMethod,
38817
- wizardTheme = _ref8.wizardTheme,
38818
- setWizardTheme = _ref8.setWizardTheme,
38819
- onComplete = _ref8.onComplete,
38820
- _ref8$onExtract = _ref8.onExtract,
38821
- onExtract = _ref8$onExtract === void 0 ? null : _ref8$onExtract,
38822
- _ref8$onMapToTheme = _ref8.onMapToTheme,
38823
- onMapToTheme = _ref8$onMapToTheme === void 0 ? null : _ref8$onMapToTheme,
38824
- _ref8$initialMethod = _ref8.initialMethod,
38825
- initialMethod = _ref8$initialMethod === void 0 ? null : _ref8$initialMethod;
39020
+ var ThemeQuickCreate = function ThemeQuickCreate(_ref9) {
39021
+ var wizardName = _ref9.wizardName,
39022
+ setWizardName = _ref9.setWizardName,
39023
+ wizardMethod = _ref9.wizardMethod,
39024
+ setWizardMethod = _ref9.setWizardMethod,
39025
+ wizardTheme = _ref9.wizardTheme,
39026
+ setWizardTheme = _ref9.setWizardTheme,
39027
+ onComplete = _ref9.onComplete,
39028
+ _ref9$onExtract = _ref9.onExtract,
39029
+ onExtract = _ref9$onExtract === void 0 ? null : _ref9$onExtract,
39030
+ _ref9$onMapToTheme = _ref9.onMapToTheme,
39031
+ onMapToTheme = _ref9$onMapToTheme === void 0 ? null : _ref9$onMapToTheme,
39032
+ _ref9$initialMethod = _ref9.initialMethod,
39033
+ initialMethod = _ref9$initialMethod === void 0 ? null : _ref9$initialMethod;
38826
39034
  var canCreate = wizardName.trim().length > 0 && wizardTheme !== null;
38827
39035
  var showMethodPicker = initialMethod === null;
38828
39036
  useEffect(function () {
@@ -66412,5 +66620,5 @@ function MarkdownFormEditor(_ref8) {
66412
66620
 
66413
66621
  ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
66414
66622
 
66415
- export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ChatCore, ChatInput, ChatMessages, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardActionsApi, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWizardModal, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, MarkdownFormEditor, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MessageBubble, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PageTabBar, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, PanelEditItemProviders, PinnedSidebar, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, StreamingText, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, ToolCallBlock, ToolSelector, WELCOME_STORAGE_KEY, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, WelcomePrompt, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetNotFound, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, WizardCustomizeStep, WizardDiscoverStep, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, WorkspaceScopeContext, addChildToLayoutItem, addItemToItemLayout, bareComponentName, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, computeDashboardPreflight, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, humanizeAction, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, makeScopedComponentId, mcpJsonToFormState, moveWidgetAcrossContainers, numChildrenForLayout, parse, parseScopedComponentId, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, serialize, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetRegistryVersion, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
66623
+ export { ALGOLIA_ANALYTICS_FOR_QUERY, ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, ALGOLIA_LIST_INDICES, ALGOLIA_LIST_INDICES_COMPLETE, ALGOLIA_LIST_INDICES_ERROR, AVAILABLE_COLORS, AddMenuItemModal, AdvancedMcpConfig, AppContext, AppSettingsModal, AppThemeScope, AppWrapper, CHOOSE_FILE, CHOOSE_FILE_COMPLETE, CHOOSE_FILE_ERROR, ChatCore, ChatInput, ChatMessages, ColorModel, ComponentConfigModel, ComponentManager, ContextModel, DATA_JSON_TO_CSV_FILE, DATA_JSON_TO_CSV_FILE_COMPLETE, DATA_JSON_TO_CSV_FILE_ERROR, DATA_JSON_TO_CSV_STRING, DATA_JSON_TO_CSV_STRING_COMPLETE, DATA_JSON_TO_CSV_STRING_ERROR, DATA_READ_FROM_FILE, DATA_READ_FROM_FILE_COMPLETE, DATA_READ_FROM_FILE_ERROR, DATA_SAVE_TO_FILE, DATA_SAVE_TO_FILE_COMPLETE, DATA_SAVE_TO_FILE_ERROR, DashCommandPalette, DashNavbar, DashSidebar, DashTabBar, DashboardStage as Dashboard, DashboardActionsApi, DashboardApi, DashboardContext, DashboardFooter, DashboardHeader, DashboardMenuItem, DashboardModel, DashboardMonitor, DashboardPublisher, DashboardStage, DashboardThemeProvider, DashboardWizardModal, DashboardWrapper, ElectronDashboardApi, ErrorBoundary, ExternalWidget, GRID_CELL_WIDGET_TYPE, HARMONY_STRATEGIES, LAYOUT_LIST, LAYOUT_LIST_COMPLETE, LAYOUT_LIST_ERROR, Layout, LayoutBuilder, LayoutBuilderAddItemModal, LayoutBuilderConfigContainerMenuItem, LayoutBuilderConfigMenuItem, LayoutBuilderConfigModal, LayoutBuilderEditItemModal, LayoutBuilderEventModal, LayoutBuilderGridItem, LayoutContainer, LayoutDragBuilder, LayoutDragBuilderEdit, LayoutGridContainer, LayoutManagerModal, LayoutModel, LayoutQuickAddMenu, MCP_CALL_TOOL_COMPLETE, MCP_CALL_TOOL_ERROR, MCP_GET_CATALOG_COMPLETE, MCP_GET_CATALOG_ERROR, MCP_LIST_RESOURCES_COMPLETE, MCP_LIST_RESOURCES_ERROR, MCP_LIST_TOOLS_COMPLETE, MCP_LIST_TOOLS_ERROR, MCP_READ_RESOURCE_COMPLETE, MCP_READ_RESOURCE_ERROR, MCP_RUN_AUTH_COMPLETE, MCP_RUN_AUTH_ERROR, MCP_SERVER_STATUS_COMPLETE, MCP_SERVER_STATUS_ERROR, MCP_START_SERVER_COMPLETE, MCP_START_SERVER_ERROR, MCP_STOP_SERVER_COMPLETE, MCP_STOP_SERVER_ERROR, MENU_ITEMS_DELETE, MENU_ITEMS_DELETE_COMPLETE, MENU_ITEMS_DELETE_ERROR, MENU_ITEMS_LIST, MENU_ITEMS_LIST_COMPLETE, MENU_ITEMS_LIST_ERROR, MENU_ITEMS_SAVE, MENU_ITEMS_SAVE_COMPLETE, MENU_ITEMS_SAVE_ERROR, MainMenu, MainMenuItem, MainMenuSection, MarkdownFormEditor, McpServerPicker, MenuItemModel, MenuSlideOverlay, MergeCellsModal, MessageBubble, MissingProviderPrompt, MockDashboardApi, PROVIDER_DELETE_COMPLETE, PROVIDER_DELETE_ERROR, PROVIDER_GET_COMPLETE, PROVIDER_GET_ERROR, PROVIDER_LIST_COMPLETE, PROVIDER_LIST_ERROR, PROVIDER_SAVE_COMPLETE, PROVIDER_SAVE_ERROR, PageTabBar, PanelCode, PanelEditItem, PanelEditItemHandlers, PanelEditItemNotifications, PanelEditItemProviders, PinnedSidebar, ProviderContext, ProviderErrorBoundary, ProviderForm, ProviderSelector, SECURE_STORAGE_ENCRYPT_STRING, SECURE_STORAGE_ENCRYPT_STRING_COMPLETE, SECURE_STORAGE_ENCRYPT_STRING_ERROR, SECURE_STORE_ENCRYPTION_CHECK, SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, SECURE_STORE_ENCRYPTION_CHECK_ERROR, SECURE_STORE_GET_DATA, SECURE_STORE_GET_DATA_COMPLETE, SECURE_STORE_GET_DATA_ERROR, SECURE_STORE_SET_DATA, SECURE_STORE_SET_DATA_COMPLETE, SECURE_STORE_SET_DATA_ERROR, SETTINGS_GET, SETTINGS_GET_COMPLETE, SETTINGS_GET_ERROR, SETTINGS_SAVE, SETTINGS_SAVE_COMPLETE, SETTINGS_SAVE_ERROR, SIDEBAR_WIDGET_TYPE, SettingsModel, SideMenu, SplitCellModal, StreamingText, THEME_DELETE, THEME_DELETE_COMPLETE, THEME_DELETE_ERROR, THEME_EXTRACT_FROM_URL, THEME_EXTRACT_FROM_URL_COMPLETE, THEME_EXTRACT_FROM_URL_ERROR, THEME_LIST, THEME_LIST_COMPLETE, THEME_LIST_ERROR, THEME_MAP_PALETTE, THEME_MAP_PALETTE_COMPLETE, THEME_MAP_PALETTE_ERROR, THEME_SAVE, THEME_SAVE_COMPLETE, THEME_SAVE_ERROR, ThemeApi, ThemeColorDots, ThemeManagerModal, ThemeModel, ThemeWrapper, ToolCallBlock, ToolSelector, WELCOME_STORAGE_KEY, WORKSPACE_DELETE, WORKSPACE_DELETE_COMPLETE, WORKSPACE_DELETE_ERROR, WORKSPACE_LIST, WORKSPACE_LIST_COMPLETE, WORKSPACE_LIST_ERROR, WORKSPACE_SAVE, WORKSPACE_SAVE_COMPLETE, WORKSPACE_SAVE_ERROR, WebDashboardApi, WelcomePrompt, Widget, WidgetApi, WidgetConfigPanel, WidgetContext, WidgetFactory, WidgetNotFound, WidgetPopoutStage, WidgetProviderWrapper, WidgetSidebar, WizardCustomizeStep, WizardDiscoverStep, Workspace, WorkspaceContext, WorkspaceFooter, WorkspaceMenu, WorkspaceModel, WorkspaceScopeContext, addChildToLayoutItem, addItemToItemLayout, bareComponentName, buildMcpConfigFromOverrides, canHaveChildren, changeDirectionForLayoutItem, computeDashboardPreflight, createProviderRegistry, deriveFormFields, envMappingToRows, evaluateBundle, extractWidgetConfigs, formStateToMcpJson, formatFieldName, generateCustomTheme, generateHarmonyTheme, generateRandomTheme, generateThemeName, getBorderStyle, getBrandPresets, getChildrenForLayoutItem, getComponentInLayout, getContainerBorderColor, getContainerColor, getIndexOfLayoutChildrenForItem, getIndexOfLayoutItem, getLayoutItemById, getLayoutItemForWorkspace, getNearestParentWorkspace, getNextHighestId, getNextHighestItemInLayout, getNextHighestOrder, getNextHighestParentId, getNextLowestItemInLayout, getParentForLayoutItem, getParentWorkspaceForItem, getThemePresets, getUserConfigurableProviders, getWidgetsForWorkspace, getWorkspacesForWorkspace, headerTemplateToRows, humanizeAction, isContainer, isLikelySecret, isMaxOrderForItem, isMinOrderForItem, isWidget, isWidgetResolvable, isWorkspace, layoutItemHasWorkspaceAsChild, loadWidgetBundle, makeScopedComponentId, mcpJsonToFormState, moveWidgetAcrossContainers, numChildrenForLayout, parse, parseScopedComponentId, removeItemFromLayout, renderComponent, renderGridLayout, renderGridLayoutFlow, _renderLayout as renderLayout, renderLayoutMenu, replaceItemInLayout, resolveIcon, serialize, setHostModules, traverseParentTree, updateLayoutItem, updateParentForItem, useDashboard, useMcpDashServer, useMcpProvider, useNotifications, useProvider, useProviderClient, useScheduler, useWebSocketProvider, useWidgetEvents, useWidgetProviders, useWidgetRegistryVersion, useWidgetSchedulerStatus, useWizardState, validateCellMerge, validateGridCell, validateGridPlacement, validateWidgetPlacement, widgetCountToTemplate, withProviderDetection };
66416
66624
  //# sourceMappingURL=index.esm.js.map