@codbex/harmonia 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18894,7 +18894,7 @@ var getButtonSize = (size3, inGroup = false) => {
18894
18894
  }
18895
18895
  };
18896
18896
  function button_default(Alpine) {
18897
- Alpine.directive("h-button", (el, { modifiers }, { cleanup }) => {
18897
+ Alpine.directive("h-button", (el, { original, modifiers }, { cleanup }) => {
18898
18898
  setButtonClasses(el);
18899
18899
  if (!el.hasAttribute("data-slot")) {
18900
18900
  el.setAttribute("data-slot", "button");
@@ -18911,7 +18911,7 @@ function button_default(Alpine) {
18911
18911
  el.classList.remove(...getButtonSize(lastSize, inGroup));
18912
18912
  el.classList.add(...getButtonSize(size3, inGroup));
18913
18913
  if (size3.startsWith("icon") && !el.hasAttribute("aria-labelledby") && !el.hasAttribute("aria-label")) {
18914
- console.error('h-button: Icon-only buttons must have an "aria-label" or "aria-labelledby" attribute', el);
18914
+ console.error(`${original}: Icon-only buttons must have an "aria-label" or "aria-labelledby" attribute`, el);
18915
18915
  }
18916
18916
  lastSize = size3;
18917
18917
  }
@@ -20456,7 +20456,7 @@ var computePosition2 = (reference, floating, options) => {
20456
20456
  // src/components/calendar.js
20457
20457
  var import_lucide2 = __toESM(require_lucide(), 1);
20458
20458
  function calendar_default(Alpine) {
20459
- Alpine.directive("h-calendar", (el, { expression }, { effect, evaluateLater, cleanup, Alpine: Alpine2 }) => {
20459
+ Alpine.directive("h-calendar", (el, { original, expression }, { effect, evaluateLater, cleanup, Alpine: Alpine2 }) => {
20460
20460
  const datepicker = Alpine2.findClosest(el.parentElement, (parent) => parent.hasOwnProperty("_h_datepicker"));
20461
20461
  el.classList.add("border", "rounded-control", "gap-2", "p-2");
20462
20462
  el.setAttribute("tabindex", "-1");
@@ -20500,7 +20500,7 @@ function calendar_default(Alpine) {
20500
20500
  const onInputChange = () => {
20501
20501
  const newValue = new Date(datepicker._h_datepicker.input.value);
20502
20502
  if (isNaN(newValue)) {
20503
- console.error(`h-calendar: input value is not a valid date - ${datepicker._h_datepicker.input.value}`);
20503
+ console.error(`${original}: input value is not a valid date - ${datepicker._h_datepicker.input.value}`);
20504
20504
  datepicker._h_datepicker.input.setCustomValidity("Input value is not a valid date.");
20505
20505
  return;
20506
20506
  } else if (selected.getTime() !== newValue.getTime()) {
@@ -20517,7 +20517,7 @@ function calendar_default(Alpine) {
20517
20517
  if (el.hasOwnProperty("_x_model") && el._x_model.get()) {
20518
20518
  selected = new Date(el._x_model.get());
20519
20519
  if (isNaN(selected)) {
20520
- console.error(`h-calendar: input value is not a valid date - ${el._x_model.get()}`);
20520
+ console.error(`${original}: input value is not a valid date - ${el._x_model.get()}`);
20521
20521
  if (datepicker) datepicker._h_datepicker.input.setCustomValidity("Input value is not a valid date.");
20522
20522
  else el.setAttribute("data-invalid", "true");
20523
20523
  } else if (datepicker) {
@@ -23538,6 +23538,128 @@ function spinner_default(Alpine) {
23538
23538
  });
23539
23539
  }
23540
23540
 
23541
+ // src/components/split.js
23542
+ function split_default(Alpine) {
23543
+ Alpine.directive("h-split", (el) => {
23544
+ el.classList.add("group/split", "flex", "data-[orientation=horizontal]:flex-row", "data-[orientation=vertical]:flex-col");
23545
+ el.setAttribute("tabindex", "-1");
23546
+ el.setAttribute("data-slot", "split");
23547
+ });
23548
+ Alpine.directive("h-split-panel", (el) => {
23549
+ el.setAttribute("tabindex", "-1");
23550
+ el.setAttribute("data-slot", "split-panel");
23551
+ });
23552
+ Alpine.directive("h-split-gutter", (el, {}, { cleanup }) => {
23553
+ el.classList.add(
23554
+ "relative",
23555
+ "shrink-0",
23556
+ "touch-none",
23557
+ "bg-border",
23558
+ "outline-none",
23559
+ "hover:bg-primary-hover",
23560
+ "active:bg-primary-active",
23561
+ "before:absolute",
23562
+ "before:top-1/2",
23563
+ "before:left-1/2",
23564
+ "before:-translate-x-1/2",
23565
+ "before:-translate-y-1/2",
23566
+ "before:block",
23567
+ "before:bg-transparent",
23568
+ "hover:before:bg-primary-hover",
23569
+ "group-data-[locked=true]/split:pointer-events-none",
23570
+ "group-data-[orientation=horizontal]/split:cursor-col-resize",
23571
+ "group-data-[orientation=vertical]/split:cursor-row-resize"
23572
+ );
23573
+ const borderClasses = [
23574
+ "bg-border",
23575
+ "outline-none",
23576
+ "hover:bg-primary-hover",
23577
+ "active:bg-primary-active",
23578
+ "before:absolute",
23579
+ "before:top-1/2",
23580
+ "before:left-1/2",
23581
+ "before:-translate-x-1/2",
23582
+ "before:-translate-y-1/2",
23583
+ "before:block",
23584
+ "before:bg-transparent",
23585
+ "hover:before:bg-primary-hover",
23586
+ "group-data-[orientation=horizontal]/split:!w-px",
23587
+ "group-data-[orientation=horizontal]/split:before:h-full",
23588
+ "group-data-[orientation=horizontal]/split:before:w-[0.313rem]",
23589
+ "group-data-[orientation=vertical]/split:!h-px",
23590
+ "group-data-[orientation=vertical]/split:before:w-full",
23591
+ "group-data-[orientation=vertical]/split:before:h-[0.313rem]"
23592
+ ];
23593
+ const handleClasses = [
23594
+ "bg-transparent",
23595
+ "outline-none",
23596
+ "after:absolute",
23597
+ "after:block",
23598
+ "after:rounded-sm",
23599
+ "after:bg-background",
23600
+ "after:border-split-handle",
23601
+ "after:border-2",
23602
+ "after:shadow-xs",
23603
+ "after:top-1/2",
23604
+ "after:left-1/2",
23605
+ "after:-translate-x-1/2",
23606
+ "after:-translate-y-1/2",
23607
+ "hover:after:border-primary-hover",
23608
+ "active:after:border-primary-active",
23609
+ "before:absolute",
23610
+ "before:block",
23611
+ "before:top-1/2",
23612
+ "before:left-1/2",
23613
+ "before:-translate-x-1/2",
23614
+ "before:-translate-y-1/2",
23615
+ "before:rounded-sm",
23616
+ "before:from-transparent",
23617
+ "before:from-15%",
23618
+ "before:via-split-handle",
23619
+ "before:to-85%",
23620
+ "before:to-transparent",
23621
+ "hover:before:bg-primary-hover",
23622
+ "hover:before:via-transparent",
23623
+ "active:before:bg-primary-active",
23624
+ "active:before:via-transparent",
23625
+ // Orientation classes
23626
+ "group-data-[orientation=horizontal]/split:before:h-full",
23627
+ "group-data-[orientation=horizontal]/split:before:w-0.5",
23628
+ "group-data-[orientation=horizontal]/split:before:bg-gradient-to-b",
23629
+ "group-data-[orientation=vertical]/split:before:h-0.5",
23630
+ "group-data-[orientation=vertical]/split:before:w-full",
23631
+ "group-data-[orientation=vertical]/split:before:bg-gradient-to-r",
23632
+ // Size classes
23633
+ "group-data-[orientation=horizontal]/split:!w-4",
23634
+ "group-data-[orientation=horizontal]/split:after:w-2.5",
23635
+ "group-data-[orientation=horizontal]/split:after:h-5",
23636
+ "group-data-[orientation=vertical]/split:!h-4",
23637
+ "group-data-[orientation=vertical]/split:after:w-5",
23638
+ "group-data-[orientation=vertical]/split:after:h-2.5"
23639
+ ];
23640
+ el.setAttribute("data-slot", "split-gutter");
23641
+ el.setAttribute("tabindex", "-1");
23642
+ el.setAttribute("role", "separator");
23643
+ function setVariant(variant = "handle") {
23644
+ if (variant === "border") {
23645
+ el.classList.remove(...handleClasses);
23646
+ el.classList.add(...borderClasses);
23647
+ } else {
23648
+ el.classList.remove(...borderClasses);
23649
+ el.classList.add(...handleClasses);
23650
+ }
23651
+ }
23652
+ const observer = new MutationObserver(() => {
23653
+ setVariant(el.parentElement.getAttribute("data-variant"));
23654
+ });
23655
+ observer.observe(el.parentElement, { attributes: true, attributeFilter: ["data-variant"] });
23656
+ setVariant(el.parentElement.getAttribute("data-variant"));
23657
+ cleanup(() => {
23658
+ observer.disconnect();
23659
+ });
23660
+ });
23661
+ }
23662
+
23541
23663
  // src/components/switch.js
23542
23664
  function switch_default(Alpine) {
23543
23665
  Alpine.directive("h-switch", (el) => {
@@ -24818,7 +24940,7 @@ function tooltip_default(Alpine) {
24818
24940
  }
24819
24941
 
24820
24942
  // package.json
24821
- var version = "0.6.0";
24943
+ var version = "0.8.0";
24822
24944
 
24823
24945
  // src/utils/breakpoint-listener.js
24824
24946
  function getBreakpointListener(handler2, breakpoint = 768) {
@@ -24840,11 +24962,19 @@ function getBreakpointListener(handler2, breakpoint = 768) {
24840
24962
  // src/utils/theme.js
24841
24963
  var colorSchemeKey = "codbex.harmonia.colorMode";
24842
24964
  var savedScheme = localStorage.getItem(colorSchemeKey);
24965
+ var callbacks = [];
24966
+ var onColorSchemeChange = (scheme) => {
24967
+ for (let i = 0; i < callbacks.length; i++) {
24968
+ callbacks[i](scheme);
24969
+ }
24970
+ };
24843
24971
  var colorSchemeChange = (event) => {
24844
24972
  if (event.matches) {
24845
24973
  document.documentElement.classList.add("dark");
24974
+ onColorSchemeChange("dark");
24846
24975
  } else {
24847
24976
  document.documentElement.classList.remove("dark");
24977
+ onColorSchemeChange("light");
24848
24978
  }
24849
24979
  };
24850
24980
  var initColorScheme = () => {
@@ -24864,15 +24994,19 @@ var setColorScheme = (mode) => {
24864
24994
  document.documentElement.classList.add("dark");
24865
24995
  localStorage.setItem(colorSchemeKey, "dark");
24866
24996
  window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", colorSchemeChange);
24997
+ onColorSchemeChange("dark");
24867
24998
  } else if (mode === "light") {
24868
24999
  document.documentElement.classList.remove("dark");
24869
25000
  localStorage.setItem(colorSchemeKey, "light");
24870
25001
  window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", colorSchemeChange);
25002
+ onColorSchemeChange("light");
24871
25003
  } else {
24872
25004
  if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
24873
25005
  document.documentElement.classList.add("dark");
25006
+ onColorSchemeChange("dark");
24874
25007
  } else {
24875
25008
  document.documentElement.classList.remove("dark");
25009
+ onColorSchemeChange("light");
24876
25010
  }
24877
25011
  localStorage.setItem(colorSchemeKey, "auto");
24878
25012
  window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", colorSchemeChange);
@@ -24886,6 +25020,17 @@ var getColorScheme = () => {
24886
25020
  }
24887
25021
  return "light";
24888
25022
  };
25023
+ var addColorSchemeListener = (callback) => {
25024
+ callbacks.push(callback);
25025
+ };
25026
+ var removeColorSchemeListener = (callback) => {
25027
+ for (let i = 0; i < callbacks.length; i++) {
25028
+ if (callbacks[i] === callback) {
25029
+ callbacks.splice(i, 1);
25030
+ return;
25031
+ }
25032
+ }
25033
+ };
24889
25034
  initColorScheme();
24890
25035
 
24891
25036
  // src/utils/focus.js
@@ -24900,6 +25045,26 @@ function focus_default(Alpine) {
24900
25045
  });
24901
25046
  }
24902
25047
 
25048
+ // src/utils/template.js
25049
+ function template_default(Alpine) {
25050
+ Alpine.directive("h-template", (el, { original, expression }, { evaluate: evaluate2, Alpine: Alpine2, cleanup }) => {
25051
+ if (el.hasAttribute(Alpine2.prefixed("data"))) {
25052
+ const template = evaluate2(expression);
25053
+ const clone = template.content.cloneNode(true).firstElementChild;
25054
+ Alpine2.addScopeToNode(clone, Alpine2.closestDataStack(el)[0], el.parentElement);
25055
+ Alpine2.mutateDom(() => {
25056
+ el.before(clone);
25057
+ Alpine2.initTree(clone);
25058
+ });
25059
+ cleanup(() => {
25060
+ clone.remove();
25061
+ });
25062
+ } else {
25063
+ console.error(`${original}: ${Alpine2.prefixed("data")} directive is missing`);
25064
+ }
25065
+ });
25066
+ }
25067
+
24903
25068
  // src/module.js
24904
25069
  var registerComponents = (registerPlugin) => {
24905
25070
  registerPlugin(accordion_default);
@@ -24932,10 +25097,12 @@ var registerComponents = (registerPlugin) => {
24932
25097
  registerPlugin(sidebar_default);
24933
25098
  registerPlugin(skeleton_default);
24934
25099
  registerPlugin(spinner_default);
25100
+ registerPlugin(split_default);
24935
25101
  registerPlugin(switch_default);
24936
25102
  registerPlugin(table_default);
24937
25103
  registerPlugin(tabs_default);
24938
25104
  registerPlugin(tag_default);
25105
+ registerPlugin(template_default);
24939
25106
  registerPlugin(text_default);
24940
25107
  registerPlugin(textarea_default);
24941
25108
  registerPlugin(tile_default);
@@ -24975,20 +25142,24 @@ export {
24975
25142
  sidebar_default as Sidebar,
24976
25143
  skeleton_default as Skeleton,
24977
25144
  spinner_default as Spinner,
25145
+ split_default as Split,
24978
25146
  switch_default as Switch,
24979
25147
  table_default as Table,
24980
25148
  tabs_default as Tabs,
24981
25149
  tag_default as Tag,
25150
+ template_default as Template,
24982
25151
  text_default as Text,
24983
25152
  textarea_default as Textarea,
24984
25153
  tile_default as Tile,
24985
25154
  timepicker_default as TimePicker,
24986
25155
  toolbar_default as Toolbar,
24987
25156
  tooltip_default as Tooltip,
25157
+ addColorSchemeListener,
24988
25158
  module_default as default,
24989
25159
  getBreakpointListener,
24990
25160
  getColorScheme,
24991
25161
  registerComponents,
25162
+ removeColorSchemeListener,
24992
25163
  setColorScheme,
24993
25164
  version
24994
25165
  };