@trops/dash-core 0.1.568 → 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, 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';
@@ -28880,6 +28880,29 @@ function classFor(prefix, type, shade, channelValue) {
28880
28880
  }
28881
28881
  return "".concat(h).concat(prefix, "-").concat(channelValue, "-").concat(shade);
28882
28882
  }
28883
+
28884
+ /**
28885
+ * CSS color value (hex literal or `var(...)` reference) for the same
28886
+ * (type, shade, channelValue) tuple `classFor` resolves to a Tailwind
28887
+ * className. Inline-style consumers read these via
28888
+ * `currentTheme.cssValue[tokenName]` — see PRD US-007.
28889
+ *
28890
+ * Named channels look up the hex from TAILWIND_PALETTE. Hex channels
28891
+ * produce a `var(--{type}-{shade})` reference that resolves against
28892
+ * the CSS custom properties ThemePreviewProvider writes to :root.
28893
+ *
28894
+ * Returns null for unknown named-color families or shades — caller
28895
+ * falls back to className-only reactivity for that token.
28896
+ */
28897
+ function cssValueFor(type, shade, channelValue) {
28898
+ if (isHexColor(channelValue)) {
28899
+ return "var(--".concat(type, "-").concat(shade, ")");
28900
+ }
28901
+ var family = TAILWIND_PALETTE && TAILWIND_PALETTE[channelValue];
28902
+ if (!family) return null;
28903
+ var hex = family[shade] || family[String(shade)];
28904
+ return hex || null;
28905
+ }
28883
28906
  function gradientFor(direction, type, fromShade, viaShade, toShade, channelValue) {
28884
28907
  if (isHexColor(channelValue)) {
28885
28908
  return "bg-gradient-to-".concat(direction, " from-[var(--").concat(type, "-").concat(fromShade, ")] via-[var(--").concat(type, "-").concat(viaShade, ")] to-[var(--").concat(type, "-").concat(toShade, ")]");
@@ -28942,17 +28965,26 @@ var ThemeModel = function ThemeModel() {
28942
28965
  if (variant in theme === false) {
28943
28966
  theme[variant] = {};
28944
28967
  }
28968
+ if (!theme[variant].cssValue) {
28969
+ theme[variant].cssValue = {};
28970
+ }
28945
28971
  Object.keys(variants[variant]).forEach(function (shade) {
28946
28972
  var numShade = variants[variant][shade];
28947
28973
  var hoverShade = getNextLevel(numShade);
28948
28974
  var textShade = invert(numShade);
28949
28975
  theme[variant]["bg-".concat(type, "-").concat(shade)] = classFor("bg", type, numShade, channelValue);
28976
+ theme[variant].cssValue["bg-".concat(type, "-").concat(shade)] = cssValueFor(type, numShade, channelValue);
28950
28977
  theme[variant]["hover-bg-".concat(type, "-").concat(shade)] = classFor("bg", type, hoverShade, channelValue, true);
28978
+ theme[variant].cssValue["hover-bg-".concat(type, "-").concat(shade)] = cssValueFor(type, hoverShade, channelValue);
28951
28979
  theme[variant]["hover-border-".concat(type, "-").concat(shade)] = classFor("border", type, hoverShade, channelValue, true);
28980
+ theme[variant].cssValue["hover-border-".concat(type, "-").concat(shade)] = cssValueFor(type, hoverShade, channelValue);
28952
28981
  theme[variant]["border-".concat(type, "-").concat(shade)] = classFor("border", type, numShade, channelValue);
28982
+ theme[variant].cssValue["border-".concat(type, "-").concat(shade)] = cssValueFor(type, numShade, channelValue);
28953
28983
  // we should be "flipping" these so dark text on light and light on dark...
28954
28984
  theme[variant]["text-".concat(type, "-").concat(shade)] = classFor("text", type, textShade, channelValue);
28985
+ theme[variant].cssValue["text-".concat(type, "-").concat(shade)] = cssValueFor(type, textShade, channelValue);
28955
28986
  theme[variant]["hover-text-".concat(type, "-").concat(shade)] = classFor("text", type, textShade, channelValue, true);
28987
+ theme[variant].cssValue["hover-text-".concat(type, "-").concat(shade)] = cssValueFor(type, textShade, channelValue);
28956
28988
  });
28957
28989
  });
28958
28990
  });
@@ -29019,7 +29051,9 @@ var ThemeModel = function ThemeModel() {
29019
29051
  colorTypes.forEach(function (type) {
29020
29052
  var channelValue = theme[type];
29021
29053
  theme["dark"]["bg-".concat(type, "-darkest")] = classFor("bg", type, 950, channelValue);
29054
+ theme["dark"].cssValue["bg-".concat(type, "-darkest")] = cssValueFor(type, 950, channelValue);
29022
29055
  theme["light"]["bg-".concat(type, "-darkest")] = classFor("bg", type, 50, channelValue);
29056
+ theme["light"].cssValue["bg-".concat(type, "-darkest")] = cssValueFor(type, 50, channelValue);
29023
29057
  });
29024
29058
 
29025
29059
  // Accumulate CSS custom properties for any hex-color channels.
@@ -29061,6 +29095,17 @@ var ThemeModel = function ThemeModel() {
29061
29095
  theme["light"]["hover-border-none"] = "hover:border-transparent";
29062
29096
  theme["light"]["hover-bg-none"] = "hover:bg-transparent";
29063
29097
  theme["light"]["hover-text-none"] = "hover:text-transparent";
29098
+
29099
+ // Mirror the transparent tokens into cssValue so inline-style
29100
+ // consumers can read borderless/transparent surfaces from the
29101
+ // same map as colored ones.
29102
+ ["dark", "light"].forEach(function (variant) {
29103
+ theme[variant].cssValue["bg-none"] = "transparent";
29104
+ theme[variant].cssValue["border-none"] = "transparent";
29105
+ theme[variant].cssValue["hover-bg-none"] = "transparent";
29106
+ theme[variant].cssValue["hover-border-none"] = "transparent";
29107
+ theme[variant].cssValue["hover-text-none"] = "transparent";
29108
+ });
29064
29109
  return theme;
29065
29110
  } catch (e) {
29066
29111
  return {};
@@ -35894,6 +35939,20 @@ function getThemePresets() {
35894
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")];
35895
35940
  }
35896
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
+
35897
35956
  // ─── Random Generation ───────────────────────────────────────────────────
35898
35957
 
35899
35958
  function generateRandomTheme() {
@@ -36790,6 +36849,87 @@ var PreviewColorsPane = function PreviewColorsPane(_ref) {
36790
36849
  }) : null;
36791
36850
  };
36792
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
+
36793
36933
  var AvailableColorsGridPane = function AvailableColorsGridPane(_ref) {
36794
36934
  var _ref$currentColor = _ref.currentColor,
36795
36935
  currentColor = _ref$currentColor === void 0 ? null : _ref$currentColor,
@@ -36863,13 +37003,23 @@ var AvailableColorsGridPane = function AvailableColorsGridPane(_ref) {
36863
37003
  scrollable: true,
36864
37004
  children: [/*#__PURE__*/jsx(DashPanel.Header, {
36865
37005
  title: "AvailableColors"
36866
- }), /*#__PURE__*/jsx(DashPanel.Body, {
37006
+ }), /*#__PURE__*/jsxs(DashPanel.Body, {
36867
37007
  scrollable: true,
36868
37008
  space: true,
36869
- children: /*#__PURE__*/jsx("div", {
37009
+ children: [/*#__PURE__*/jsx("div", {
36870
37010
  className: "flex flex-col space-y-1",
36871
37011
  children: renderAvailableColors()
36872
- })
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
+ })]
36873
37023
  }), onCancel && /*#__PURE__*/jsx(DashPanel.Footer, {
36874
37024
  children: /*#__PURE__*/jsx(Button, {
36875
37025
  title: "Cancel",
@@ -38335,23 +38485,41 @@ var ThemePickerGridPane = function ThemePickerGridPane(_ref) {
38335
38485
  themeVariant = _useContext.themeVariant;
38336
38486
  function renderMenuItem(tk) {
38337
38487
  var displayTheme = themes[tk][themeVariant];
38338
- var colors = [{
38339
- 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 = [{
38340
38497
  type: "secondary",
38341
- color: displayTheme["bg-secondary-medium"]
38498
+ value: cssValue["bg-secondary-medium"],
38499
+ className: displayTheme["bg-secondary-medium"]
38342
38500
  }, {
38343
- colorName: displayTheme["tertiary"],
38344
38501
  type: "tertiary",
38345
- color: displayTheme["bg-tertiary-medium"]
38502
+ value: cssValue["bg-tertiary-medium"],
38503
+ className: displayTheme["bg-tertiary-medium"]
38346
38504
  }, {
38347
- colorName: displayTheme["neutral"],
38348
38505
  type: "neutral",
38349
- color: displayTheme["bg-neutral-light"]
38506
+ value: cssValue["bg-neutral-light"],
38507
+ className: displayTheme["bg-neutral-light"]
38350
38508
  }];
38351
- 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
+ }
38352
38520
  return /*#__PURE__*/jsx("div", {
38353
- className: "rounded ".concat(color["color"], " h-20 w-full")
38354
- }, "theme-grid-".concat(color.type));
38521
+ className: "rounded ".concat(swatch.className, " h-20 w-full")
38522
+ }, "theme-grid-".concat(swatch.type));
38355
38523
  });
38356
38524
  }
38357
38525
  function renderCurrentThemes() {
@@ -38511,15 +38679,30 @@ var GENERATE_MODES = {
38511
38679
 
38512
38680
  // ─── Preset Gallery ──────────────────────────────────────────────────────
38513
38681
 
38514
- var PresetCard = function PresetCard(_ref) {
38515
- var preset = _ref.preset,
38516
- onSelect = _ref.onSelect,
38517
- _ref$selected = _ref.selected,
38518
- selected = _ref$selected === void 0 ? false : _ref$selected;
38519
- var colors = [preset.primary, preset.secondary, preset.tertiary];
38520
- var swatchClasses = colors.map(function (c) {
38521
- 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")
38522
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];
38523
38706
  return /*#__PURE__*/jsxs("div", {
38524
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"),
38525
38708
  onClick: function onClick() {
@@ -38527,9 +38710,9 @@ var PresetCard = function PresetCard(_ref) {
38527
38710
  },
38528
38711
  children: [/*#__PURE__*/jsx("div", {
38529
38712
  className: "flex flex-row gap-1",
38530
- children: swatchClasses.map(function (cls, i) {
38531
- return /*#__PURE__*/jsx("div", {
38532
- className: "h-6 flex-1 rounded ".concat(cls)
38713
+ children: colors.map(function (c, i) {
38714
+ return /*#__PURE__*/jsx(PresetSwatch, {
38715
+ color: c
38533
38716
  }, i);
38534
38717
  })
38535
38718
  }), /*#__PURE__*/jsx("span", {
@@ -38538,13 +38721,14 @@ var PresetCard = function PresetCard(_ref) {
38538
38721
  })]
38539
38722
  });
38540
38723
  };
38541
- var PresetGallery = function PresetGallery(_ref2) {
38542
- var onSelect = _ref2.onSelect,
38543
- _ref2$selectedPresetI = _ref2.selectedPresetId,
38544
- selectedPresetId = _ref2$selectedPresetI === void 0 ? null : _ref2$selectedPresetI,
38545
- _ref2$inline = _ref2.inline,
38546
- 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;
38547
38730
  var presets = getThemePresets();
38731
+ var brandPresets = getBrandPresets();
38548
38732
  return /*#__PURE__*/jsxs("div", {
38549
38733
  className: inline ? "flex flex-col gap-4" : "flex flex-col gap-4 p-6 overflow-y-auto flex-1 min-h-0",
38550
38734
  children: [/*#__PURE__*/jsx("span", {
@@ -38559,16 +38743,28 @@ var PresetGallery = function PresetGallery(_ref2) {
38559
38743
  selected: selectedPresetId != null && preset.name === selectedPresetId
38560
38744
  }, i);
38561
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
+ })
38562
38758
  })]
38563
38759
  });
38564
38760
  };
38565
38761
 
38566
38762
  // ─── Color Harmony Picker ────────────────────────────────────────────────
38567
38763
 
38568
- var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref3) {
38569
- var value = _ref3.value,
38570
- onChange = _ref3.onChange,
38571
- label = _ref3.label;
38764
+ var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref4) {
38765
+ var value = _ref4.value,
38766
+ onChange = _ref4.onChange,
38767
+ label = _ref4.label;
38572
38768
  return /*#__PURE__*/jsxs("div", {
38573
38769
  className: "flex flex-col gap-2",
38574
38770
  children: [/*#__PURE__*/jsx("span", {
@@ -38588,10 +38784,10 @@ var ColorSwatchGrid$1 = function ColorSwatchGrid(_ref3) {
38588
38784
  })]
38589
38785
  });
38590
38786
  };
38591
- var PreviewSwatch = function PreviewSwatch(_ref4) {
38592
- var color = _ref4.color,
38593
- strategy = _ref4.strategy,
38594
- customColors = _ref4.customColors;
38787
+ var PreviewSwatch = function PreviewSwatch(_ref5) {
38788
+ var color = _ref5.color,
38789
+ strategy = _ref5.strategy,
38790
+ customColors = _ref5.customColors;
38595
38791
  var colors;
38596
38792
  if (strategy === "custom" && customColors) {
38597
38793
  colors = [customColors.primary, customColors.secondary, customColors.tertiary];
@@ -38614,10 +38810,10 @@ var PreviewSwatch = function PreviewSwatch(_ref4) {
38614
38810
  })
38615
38811
  });
38616
38812
  };
38617
- var ColorHarmonyPicker = function ColorHarmonyPicker(_ref5) {
38618
- var onGenerate = _ref5.onGenerate,
38619
- _ref5$inline = _ref5.inline,
38620
- 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;
38621
38817
  var _useState = useState("blue"),
38622
38818
  _useState2 = _slicedToArray(_useState, 2),
38623
38819
  selectedColor = _useState2[0],
@@ -38711,12 +38907,12 @@ var ColorHarmonyPicker = function ColorHarmonyPicker(_ref5) {
38711
38907
 
38712
38908
  // ─── Wizard Components ──────────────────────────────────────────────────
38713
38909
 
38714
- var MethodCard = function MethodCard(_ref6) {
38715
- var icon = _ref6.icon,
38716
- title = _ref6.title,
38717
- subtitle = _ref6.subtitle,
38718
- selected = _ref6.selected,
38719
- 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;
38720
38916
  return /*#__PURE__*/jsxs("div", {
38721
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"),
38722
38918
  onClick: onClick,
@@ -38735,9 +38931,9 @@ var MethodCard = function MethodCard(_ref6) {
38735
38931
  })]
38736
38932
  });
38737
38933
  };
38738
- var RandomPreview = function RandomPreview(_ref7) {
38739
- var theme = _ref7.theme,
38740
- onRegenerate = _ref7.onRegenerate;
38934
+ var RandomPreview = function RandomPreview(_ref8) {
38935
+ var theme = _ref8.theme,
38936
+ onRegenerate = _ref8.onRegenerate;
38741
38937
  var colors = theme ? [theme.primary, theme.secondary, theme.tertiary] : [];
38742
38938
  return /*#__PURE__*/jsxs("div", {
38743
38939
  className: "flex flex-col gap-4",
@@ -38764,20 +38960,20 @@ var RandomPreview = function RandomPreview(_ref7) {
38764
38960
  })]
38765
38961
  });
38766
38962
  };
38767
- var ThemeQuickCreate = function ThemeQuickCreate(_ref8) {
38768
- var wizardName = _ref8.wizardName,
38769
- setWizardName = _ref8.setWizardName,
38770
- wizardMethod = _ref8.wizardMethod,
38771
- setWizardMethod = _ref8.setWizardMethod,
38772
- wizardTheme = _ref8.wizardTheme,
38773
- setWizardTheme = _ref8.setWizardTheme,
38774
- onComplete = _ref8.onComplete,
38775
- _ref8$onExtract = _ref8.onExtract,
38776
- onExtract = _ref8$onExtract === void 0 ? null : _ref8$onExtract,
38777
- _ref8$onMapToTheme = _ref8.onMapToTheme,
38778
- onMapToTheme = _ref8$onMapToTheme === void 0 ? null : _ref8$onMapToTheme,
38779
- _ref8$initialMethod = _ref8.initialMethod,
38780
- 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;
38781
38977
  var canCreate = wizardName.trim().length > 0 && wizardTheme !== null;
38782
38978
  var showMethodPicker = initialMethod === null;
38783
38979
  useEffect(function () {
@@ -66367,5 +66563,5 @@ function MarkdownFormEditor(_ref8) {
66367
66563
 
66368
66564
  ComponentManager.registerContainerTypes(LayoutContainer, LayoutGridContainer);
66369
66565
 
66370
- 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 };
66371
66567
  //# sourceMappingURL=index.esm.js.map