@trops/dash-core 0.1.569 → 0.1.570

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, 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,87 @@ 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
+
36838
36933
  var AvailableColorsGridPane = function AvailableColorsGridPane(_ref) {
36839
36934
  var _ref$currentColor = _ref.currentColor,
36840
36935
  currentColor = _ref$currentColor === void 0 ? null : _ref$currentColor,
@@ -36908,13 +37003,23 @@ var AvailableColorsGridPane = function AvailableColorsGridPane(_ref) {
36908
37003
  scrollable: true,
36909
37004
  children: [/*#__PURE__*/jsx(DashPanel.Header, {
36910
37005
  title: "AvailableColors"
36911
- }), /*#__PURE__*/jsx(DashPanel.Body, {
37006
+ }), /*#__PURE__*/jsxs(DashPanel.Body, {
36912
37007
  scrollable: true,
36913
37008
  space: true,
36914
- children: /*#__PURE__*/jsx("div", {
37009
+ children: [/*#__PURE__*/jsx("div", {
36915
37010
  className: "flex flex-col space-y-1",
36916
37011
  children: renderAvailableColors()
36917
- })
37012
+ }), shade !== null && /*#__PURE__*/jsx(CustomHexColorPane, {
37013
+ onApply: function onApply(hex) {
37014
+ return handleChooseColor({
37015
+ colorName: hex,
37016
+ colorType: colorType,
37017
+ shade: shade || 500,
37018
+ panelType: "main"
37019
+ });
37020
+ },
37021
+ label: "Custom hex for ".concat(colorType || "channel")
37022
+ })]
36918
37023
  }), onCancel && /*#__PURE__*/jsx(DashPanel.Footer, {
36919
37024
  children: /*#__PURE__*/jsx(Button, {
36920
37025
  title: "Cancel",
@@ -38380,23 +38485,41 @@ var ThemePickerGridPane = function ThemePickerGridPane(_ref) {
38380
38485
  themeVariant = _useContext.themeVariant;
38381
38486
  function renderMenuItem(tk) {
38382
38487
  var displayTheme = themes[tk][themeVariant];
38383
- var colors = [{
38384
- colorName: displayTheme["secondary"],
38488
+ // Read inline CSS color values from `cssValue` (v0.1.569+) so
38489
+ // preview swatches render correctly for BOTH named-color and
38490
+ // hex (brand-preset) themes. For hex themes, the className path
38491
+ // resolves to `bg-[var(--secondary-700)]` which depends on the
38492
+ // active theme's CSS variables — those aren't injected for
38493
+ // OTHER themes shown in the picker grid. Inline cssValue
38494
+ // sidesteps that limitation.
38495
+ var cssValue = displayTheme.cssValue || {};
38496
+ var swatches = [{
38385
38497
  type: "secondary",
38386
- color: displayTheme["bg-secondary-medium"]
38498
+ value: cssValue["bg-secondary-medium"],
38499
+ className: displayTheme["bg-secondary-medium"]
38387
38500
  }, {
38388
- colorName: displayTheme["tertiary"],
38389
38501
  type: "tertiary",
38390
- color: displayTheme["bg-tertiary-medium"]
38502
+ value: cssValue["bg-tertiary-medium"],
38503
+ className: displayTheme["bg-tertiary-medium"]
38391
38504
  }, {
38392
- colorName: displayTheme["neutral"],
38393
38505
  type: "neutral",
38394
- color: displayTheme["bg-neutral-light"]
38506
+ value: cssValue["bg-neutral-light"],
38507
+ className: displayTheme["bg-neutral-light"]
38395
38508
  }];
38396
- return colors.map(function (color) {
38509
+ return swatches.map(function (swatch) {
38510
+ // Prefer cssValue (works for any theme). Fall back to className
38511
+ // for pre-v0.1.569 themes without a cssValue map.
38512
+ if (swatch.value) {
38513
+ return /*#__PURE__*/jsx("div", {
38514
+ className: "rounded h-20 w-full",
38515
+ style: {
38516
+ backgroundColor: swatch.value
38517
+ }
38518
+ }, "theme-grid-".concat(swatch.type));
38519
+ }
38397
38520
  return /*#__PURE__*/jsx("div", {
38398
- className: "rounded ".concat(color["color"], " h-20 w-full")
38399
- }, "theme-grid-".concat(color.type));
38521
+ className: "rounded ".concat(swatch.className, " h-20 w-full")
38522
+ }, "theme-grid-".concat(swatch.type));
38400
38523
  });
38401
38524
  }
38402
38525
  function renderCurrentThemes() {
@@ -38556,15 +38679,30 @@ var GENERATE_MODES = {
38556
38679
 
38557
38680
  // ─── Preset Gallery ──────────────────────────────────────────────────────
38558
38681
 
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");
38682
+ // Render a swatch for a preset's channel value. Handles both Tailwind
38683
+ // named colors (`"blue"` → `bg-blue-500`) and arbitrary-color-themes
38684
+ // hex values (`"#4A154B"` → inline style). Used by brand presets which
38685
+ // carry hex palettes.
38686
+ var PresetSwatch = function PresetSwatch(_ref) {
38687
+ var color = _ref.color;
38688
+ if (isHexColor(color)) {
38689
+ return /*#__PURE__*/jsx("div", {
38690
+ className: "h-6 flex-1 rounded",
38691
+ style: {
38692
+ backgroundColor: normalizeHex(color) || color
38693
+ }
38694
+ });
38695
+ }
38696
+ return /*#__PURE__*/jsx("div", {
38697
+ className: "h-6 flex-1 rounded bg-".concat(color, "-500")
38567
38698
  });
38699
+ };
38700
+ var PresetCard = function PresetCard(_ref2) {
38701
+ var preset = _ref2.preset,
38702
+ onSelect = _ref2.onSelect,
38703
+ _ref2$selected = _ref2.selected,
38704
+ selected = _ref2$selected === void 0 ? false : _ref2$selected;
38705
+ var colors = [preset.primary, preset.secondary, preset.tertiary];
38568
38706
  return /*#__PURE__*/jsxs("div", {
38569
38707
  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
38708
  onClick: function onClick() {
@@ -38572,9 +38710,9 @@ var PresetCard = function PresetCard(_ref) {
38572
38710
  },
38573
38711
  children: [/*#__PURE__*/jsx("div", {
38574
38712
  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)
38713
+ children: colors.map(function (c, i) {
38714
+ return /*#__PURE__*/jsx(PresetSwatch, {
38715
+ color: c
38578
38716
  }, i);
38579
38717
  })
38580
38718
  }), /*#__PURE__*/jsx("span", {
@@ -38583,13 +38721,14 @@ var PresetCard = function PresetCard(_ref) {
38583
38721
  })]
38584
38722
  });
38585
38723
  };
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;
38724
+ var PresetGallery = function PresetGallery(_ref3) {
38725
+ var onSelect = _ref3.onSelect,
38726
+ _ref3$selectedPresetI = _ref3.selectedPresetId,
38727
+ selectedPresetId = _ref3$selectedPresetI === void 0 ? null : _ref3$selectedPresetI,
38728
+ _ref3$inline = _ref3.inline,
38729
+ inline = _ref3$inline === void 0 ? false : _ref3$inline;
38592
38730
  var presets = getThemePresets();
38731
+ var brandPresets = getBrandPresets();
38593
38732
  return /*#__PURE__*/jsxs("div", {
38594
38733
  className: inline ? "flex flex-col gap-4" : "flex flex-col gap-4 p-6 overflow-y-auto flex-1 min-h-0",
38595
38734
  children: [/*#__PURE__*/jsx("span", {
@@ -38604,16 +38743,28 @@ var PresetGallery = function PresetGallery(_ref2) {
38604
38743
  selected: selectedPresetId != null && preset.name === selectedPresetId
38605
38744
  }, i);
38606
38745
  })
38746
+ }), /*#__PURE__*/jsx("span", {
38747
+ className: "text-sm font-semibold opacity-50 mt-4",
38748
+ children: "Brand Presets"
38749
+ }), /*#__PURE__*/jsx("div", {
38750
+ className: "grid grid-cols-3 gap-3",
38751
+ children: brandPresets.map(function (preset, i) {
38752
+ return /*#__PURE__*/jsx(PresetCard, {
38753
+ preset: preset,
38754
+ onSelect: onSelect,
38755
+ selected: selectedPresetId != null && preset.name === selectedPresetId
38756
+ }, "brand-".concat(i));
38757
+ })
38607
38758
  })]
38608
38759
  });
38609
38760
  };
38610
38761
 
38611
38762
  // ─── Color Harmony Picker ────────────────────────────────────────────────
38612
38763
 
38613
- var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref3) {
38614
- var value = _ref3.value,
38615
- onChange = _ref3.onChange,
38616
- label = _ref3.label;
38764
+ var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref4) {
38765
+ var value = _ref4.value,
38766
+ onChange = _ref4.onChange,
38767
+ label = _ref4.label;
38617
38768
  return /*#__PURE__*/jsxs("div", {
38618
38769
  className: "flex flex-col gap-2",
38619
38770
  children: [/*#__PURE__*/jsx("span", {
@@ -38633,10 +38784,10 @@ var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref3) {
38633
38784
  })]
38634
38785
  });
38635
38786
  };
38636
- var PreviewSwatch = function PreviewSwatch(_ref4) {
38637
- var color = _ref4.color,
38638
- strategy = _ref4.strategy,
38639
- customColors = _ref4.customColors;
38787
+ var PreviewSwatch = function PreviewSwatch(_ref5) {
38788
+ var color = _ref5.color,
38789
+ strategy = _ref5.strategy,
38790
+ customColors = _ref5.customColors;
38640
38791
  var colors;
38641
38792
  if (strategy === "custom" && customColors) {
38642
38793
  colors = [customColors.primary, customColors.secondary, customColors.tertiary];
@@ -38659,10 +38810,10 @@ var PreviewSwatch = function PreviewSwatch(_ref4) {
38659
38810
  })
38660
38811
  });
38661
38812
  };
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;
38813
+ var ColorHarmonyPicker = function ColorHarmonyPicker(_ref6) {
38814
+ var onGenerate = _ref6.onGenerate,
38815
+ _ref6$inline = _ref6.inline,
38816
+ inline = _ref6$inline === void 0 ? false : _ref6$inline;
38666
38817
  var _useState = useState("blue"),
38667
38818
  _useState2 = _slicedToArray(_useState, 2),
38668
38819
  selectedColor = _useState2[0],
@@ -38756,12 +38907,12 @@ var ColorHarmonyPicker = function ColorHarmonyPicker(_ref5) {
38756
38907
 
38757
38908
  // ─── Wizard Components ──────────────────────────────────────────────────
38758
38909
 
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;
38910
+ var MethodCard = function MethodCard(_ref7) {
38911
+ var icon = _ref7.icon,
38912
+ title = _ref7.title,
38913
+ subtitle = _ref7.subtitle,
38914
+ selected = _ref7.selected,
38915
+ onClick = _ref7.onClick;
38765
38916
  return /*#__PURE__*/jsxs("div", {
38766
38917
  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
38918
  onClick: onClick,
@@ -38780,9 +38931,9 @@ var MethodCard = function MethodCard(_ref6) {
38780
38931
  })]
38781
38932
  });
38782
38933
  };
38783
- var RandomPreview = function RandomPreview(_ref7) {
38784
- var theme = _ref7.theme,
38785
- onRegenerate = _ref7.onRegenerate;
38934
+ var RandomPreview = function RandomPreview(_ref8) {
38935
+ var theme = _ref8.theme,
38936
+ onRegenerate = _ref8.onRegenerate;
38786
38937
  var colors = theme ? [theme.primary, theme.secondary, theme.tertiary] : [];
38787
38938
  return /*#__PURE__*/jsxs("div", {
38788
38939
  className: "flex flex-col gap-4",
@@ -38809,20 +38960,20 @@ var RandomPreview = function RandomPreview(_ref7) {
38809
38960
  })]
38810
38961
  });
38811
38962
  };
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;
38963
+ var ThemeQuickCreate = function ThemeQuickCreate(_ref9) {
38964
+ var wizardName = _ref9.wizardName,
38965
+ setWizardName = _ref9.setWizardName,
38966
+ wizardMethod = _ref9.wizardMethod,
38967
+ setWizardMethod = _ref9.setWizardMethod,
38968
+ wizardTheme = _ref9.wizardTheme,
38969
+ setWizardTheme = _ref9.setWizardTheme,
38970
+ onComplete = _ref9.onComplete,
38971
+ _ref9$onExtract = _ref9.onExtract,
38972
+ onExtract = _ref9$onExtract === void 0 ? null : _ref9$onExtract,
38973
+ _ref9$onMapToTheme = _ref9.onMapToTheme,
38974
+ onMapToTheme = _ref9$onMapToTheme === void 0 ? null : _ref9$onMapToTheme,
38975
+ _ref9$initialMethod = _ref9.initialMethod,
38976
+ initialMethod = _ref9$initialMethod === void 0 ? null : _ref9$initialMethod;
38826
38977
  var canCreate = wizardName.trim().length > 0 && wizardTheme !== null;
38827
38978
  var showMethodPicker = initialMethod === null;
38828
38979
  useEffect(function () {
@@ -66412,5 +66563,5 @@ function MarkdownFormEditor(_ref8) {
66412
66563
 
66413
66564
  ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
66414
66565
 
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 };
66566
+ 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
66567
  //# sourceMappingURL=index.esm.js.map