@digilogiclabs/saas-factory-ui 1.34.0 → 1.34.1

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.js CHANGED
@@ -27747,15 +27747,6 @@ var SortIcon = ({ size = 13 }) => /* @__PURE__ */ (0, import_jsx_runtime110.jsxs
27747
27747
  ]
27748
27748
  }
27749
27749
  );
27750
- var STYLE_ID = "dll-news-ticker-styles";
27751
- function ensureStylesInjected() {
27752
- if (typeof document === "undefined") return;
27753
- if (document.getElementById(STYLE_ID)) return;
27754
- const el = document.createElement("style");
27755
- el.id = STYLE_ID;
27756
- el.textContent = NEWS_TICKER_CSS;
27757
- document.head.appendChild(el);
27758
- }
27759
27750
  function NewsTicker({
27760
27751
  items,
27761
27752
  speed = 40,
@@ -27784,9 +27775,6 @@ function NewsTicker({
27784
27775
  const inputRef = React85.useRef(null);
27785
27776
  const filterRef = React85.useRef(null);
27786
27777
  const [trackWidth, setTrackWidth] = React85.useState(0);
27787
- React85.useEffect(() => {
27788
- ensureStylesInjected();
27789
- }, []);
27790
27778
  const hasFiltersOrSort = filters.length > 0 || sorts.length > 0;
27791
27779
  const activeFilterCount = Object.values(activeFilters).filter((v) => v && v.length > 0).length + (activeSort ? 1 : 0);
27792
27780
  React85.useEffect(() => {
@@ -27872,6 +27860,7 @@ function NewsTicker({
27872
27860
  className: `ticker-root ${variantClass} ${className}`,
27873
27861
  style: { ["--ticker-h"]: `${height}px` },
27874
27862
  children: [
27863
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("style", { href: "dll-news-ticker-styles", precedence: "default", children: NEWS_TICKER_CSS }),
27875
27864
  /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "ticker-controls", children: [
27876
27865
  /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
27877
27866
  "button",
@@ -28643,15 +28632,6 @@ function useDebouncedValue(value, ms) {
28643
28632
  }, [value, ms]);
28644
28633
  return debounced;
28645
28634
  }
28646
- var STYLE_ID2 = "dll-filterable-grid-styles";
28647
- function ensureStylesInjected2() {
28648
- if (typeof document === "undefined") return;
28649
- if (document.getElementById(STYLE_ID2)) return;
28650
- const el = document.createElement("style");
28651
- el.id = STYLE_ID2;
28652
- el.textContent = FILTERABLE_GRID_CSS;
28653
- document.head.appendChild(el);
28654
- }
28655
28635
  function FilterSidebar({
28656
28636
  open,
28657
28637
  onClose,
@@ -28986,9 +28966,6 @@ function FilterableGrid({
28986
28966
  labels: labelOverrides,
28987
28967
  className = ""
28988
28968
  }) {
28989
- React86.useEffect(() => {
28990
- ensureStylesInjected2();
28991
- }, []);
28992
28969
  const labels = React86.useMemo(
28993
28970
  () => ({ ...DEFAULT_LABELS, ...labelOverrides }),
28994
28971
  [labelOverrides]
@@ -29243,6 +29220,7 @@ function FilterableGrid({
29243
29220
  const showEmpty = displayed.length === 0 && !loading;
29244
29221
  const currentState = stateRef.current;
29245
29222
  return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)("div", { className: `fg-root ${className}`.trim(), children: [
29223
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("style", { href: "dll-filterable-grid-styles", precedence: "default", children: FILTERABLE_GRID_CSS }),
29246
29224
  /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "fg-sr-only", "aria-live": "polite", "aria-atomic": "true", children: announcement }),
29247
29225
  showSearch && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("div", { className: "fg-search-row", children: /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)("div", { className: "fg-search", children: [
29248
29226
  /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(SearchIcon2, { size: 16 }),
@@ -29999,7 +29977,6 @@ var STAGGER_STEP_MS = 35;
29999
29977
  var STAGGER_CAP = 14;
30000
29978
  var TILT_MAX_DEG = 12;
30001
29979
  var SCALE_HOVER = 1.04;
30002
- var STYLE_ID3 = "dll-tilt-card-styles";
30003
29980
  var TILT_CARD_CSS = `
30004
29981
  .tc-root {
30005
29982
  --tc-accent: #3b82f6;
@@ -30304,14 +30281,6 @@ var TILT_CARD_CSS = `
30304
30281
  }
30305
30282
  }
30306
30283
  `;
30307
- function ensureStylesInjected3() {
30308
- if (typeof document === "undefined") return;
30309
- if (document.getElementById(STYLE_ID3)) return;
30310
- const el = document.createElement("style");
30311
- el.id = STYLE_ID3;
30312
- el.textContent = TILT_CARD_CSS;
30313
- document.head.appendChild(el);
30314
- }
30315
30284
  function TiltCard({
30316
30285
  accent,
30317
30286
  accentSecondary,
@@ -30335,7 +30304,6 @@ function TiltCard({
30335
30304
  const uid = (0, import_react67.useId)().replace(/:/g, "");
30336
30305
  const rootRef = (0, import_react67.useRef)(null);
30337
30306
  const [hovered, setHovered] = (0, import_react67.useState)(false);
30338
- ensureStylesInjected3();
30339
30307
  const handleMove = (0, import_react67.useCallback)(
30340
30308
  (e) => {
30341
30309
  if (disableTilt && disableShine) return;
@@ -30440,8 +30408,9 @@ function TiltCard({
30440
30408
  "aria-pressed": as === "button" ? selected : void 0,
30441
30409
  "data-hovered": hovered || void 0
30442
30410
  };
30411
+ const stylesheet = /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("style", { href: "dll-tilt-card-styles", precedence: "default", children: TILT_CARD_CSS });
30443
30412
  if (as === "button") {
30444
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
30413
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
30445
30414
  "button",
30446
30415
  {
30447
30416
  ...commonProps,
@@ -30449,11 +30418,14 @@ function TiltCard({
30449
30418
  disabled: selected,
30450
30419
  onClick: handleClick,
30451
30420
  onKeyDown: handleKey,
30452
- children: content
30421
+ children: [
30422
+ stylesheet,
30423
+ content
30424
+ ]
30453
30425
  }
30454
30426
  );
30455
30427
  }
30456
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
30428
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
30457
30429
  "div",
30458
30430
  {
30459
30431
  ...commonProps,
@@ -30462,7 +30434,10 @@ function TiltCard({
30462
30434
  "aria-disabled": selected || void 0,
30463
30435
  onClick: handleClick,
30464
30436
  onKeyDown: handleKey,
30465
- children: content
30437
+ children: [
30438
+ stylesheet,
30439
+ content
30440
+ ]
30466
30441
  }
30467
30442
  );
30468
30443
  }
@@ -37233,10 +37208,10 @@ var DEFAULT_LAYOUT = {
37233
37208
  cardH: 56,
37234
37209
  detailMaxW: 320
37235
37210
  };
37236
- var STYLE_ID4 = "dll-flow-tree-styles";
37211
+ var STYLE_ID = "dll-flow-tree-styles";
37237
37212
  function FlowTreeStyles() {
37238
37213
  const reactHostingProps = {
37239
- href: STYLE_ID4,
37214
+ href: STYLE_ID,
37240
37215
  precedence: "default"
37241
37216
  };
37242
37217
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
@@ -37247,11 +37222,11 @@ function FlowTreeStyles() {
37247
37222
  }
37248
37223
  );
37249
37224
  }
37250
- function ensureStylesInjected4() {
37225
+ function ensureStylesInjected() {
37251
37226
  if (typeof document === "undefined") return;
37252
- if (document.getElementById(STYLE_ID4)) return;
37227
+ if (document.getElementById(STYLE_ID)) return;
37253
37228
  const el = document.createElement("style");
37254
- el.id = STYLE_ID4;
37229
+ el.id = STYLE_ID;
37255
37230
  el.textContent = FLOW_TREE_CSS;
37256
37231
  document.head.appendChild(el);
37257
37232
  }
@@ -37739,7 +37714,7 @@ function FlowTree({
37739
37714
  autoCyclePaths
37740
37715
  }) {
37741
37716
  React87.useEffect(() => {
37742
- ensureStylesInjected4();
37717
+ ensureStylesInjected();
37743
37718
  }, []);
37744
37719
  const opts = React87.useMemo(
37745
37720
  () => ({ ...DEFAULT_LAYOUT, ...layoutOptions ?? {} }),
@@ -41635,7 +41610,6 @@ Scoreboard.displayName = "Scoreboard";
41635
41610
  // src/components/ui/step-wizard/index.tsx
41636
41611
  var import_react79 = require("react");
41637
41612
  var import_jsx_runtime128 = require("react/jsx-runtime");
41638
- var STYLE_ID5 = "dll-step-wizard-styles";
41639
41613
  var STEP_WIZARD_CSS = `
41640
41614
  .sw-root {
41641
41615
  --sw-accent: var(--primary, #3b82f6);
@@ -41793,27 +41767,19 @@ var STEP_WIZARD_CSS = `
41793
41767
  box-shadow: 0 4px 20px rgba(34, 197, 94, 0.25);
41794
41768
  }
41795
41769
  `;
41796
- function ensureStylesInjected5() {
41797
- if (typeof document === "undefined") return;
41798
- if (document.getElementById(STYLE_ID5)) return;
41799
- const el = document.createElement("style");
41800
- el.id = STYLE_ID5;
41801
- el.textContent = STEP_WIZARD_CSS;
41802
- document.head.appendChild(el);
41803
- }
41804
41770
  function StepProgress({
41805
41771
  steps,
41806
41772
  current,
41807
41773
  onJump,
41808
41774
  className = ""
41809
41775
  }) {
41810
- ensureStylesInjected5();
41811
41776
  const currentIdx = Math.max(
41812
41777
  0,
41813
41778
  steps.findIndex((s) => s.key === current)
41814
41779
  );
41815
41780
  const pct = steps.length <= 1 ? 100 : currentIdx / (steps.length - 1) * 100;
41816
41781
  return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: `sw-progress ${className}`.trim(), children: [
41782
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("style", { href: "dll-step-wizard-styles", precedence: "default", children: STEP_WIZARD_CSS }),
41817
41783
  /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "sw-progress-row", children: steps.map((s, i) => {
41818
41784
  const state = i === currentIdx ? "active" : i < currentIdx ? "done" : "todo";
41819
41785
  const clickable = state === "done" && !!onJump;
@@ -41863,7 +41829,6 @@ function StepWizard({
41863
41829
  nextLabel = "Continue",
41864
41830
  className = ""
41865
41831
  }) {
41866
- ensureStylesInjected5();
41867
41832
  const currentIdx = steps.findIndex((s) => s.key === current);
41868
41833
  const safeIdx = currentIdx < 0 ? 0 : currentIdx;
41869
41834
  const isFirst = safeIdx === 0;
@@ -41894,6 +41859,7 @@ function StepWizard({
41894
41859
  return () => window.removeEventListener("keydown", onKey);
41895
41860
  }, [goBack, isFirst]);
41896
41861
  return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { className: `sw-root ${className}`.trim(), children: [
41862
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("style", { href: "dll-step-wizard-styles", precedence: "default", children: STEP_WIZARD_CSS }),
41897
41863
  !hideProgress && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(StepProgress, { steps, current, onJump: onChange }),
41898
41864
  banner && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "sw-banner", children: banner }),
41899
41865
  /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { className: "sw-content", children: renderStep(current) }, current),
@@ -41928,7 +41894,6 @@ function StepWizard({
41928
41894
 
41929
41895
  // src/components/ui/pill-toggle/index.tsx
41930
41896
  var import_jsx_runtime129 = require("react/jsx-runtime");
41931
- var STYLE_ID6 = "dll-pill-toggle-styles";
41932
41897
  var PILL_TOGGLE_CSS = `
41933
41898
  .pt-root {
41934
41899
  --pt-accent: var(--primary, #3b82f6);
@@ -41977,16 +41942,7 @@ var PILL_TOGGLE_CSS = `
41977
41942
  line-height: 1;
41978
41943
  }
41979
41944
  `;
41980
- function ensureStylesInjected6() {
41981
- if (typeof document === "undefined") return;
41982
- if (document.getElementById(STYLE_ID6)) return;
41983
- const el = document.createElement("style");
41984
- el.id = STYLE_ID6;
41985
- el.textContent = PILL_TOGGLE_CSS;
41986
- document.head.appendChild(el);
41987
- }
41988
41945
  function PillToggle(props) {
41989
- ensureStylesInjected6();
41990
41946
  const { options, ariaLabel, className = "" } = props;
41991
41947
  const isActive = (value) => {
41992
41948
  if (props.multi) return props.value.includes(value);
@@ -42006,31 +41962,34 @@ function PillToggle(props) {
42006
41962
  }
42007
41963
  props.onChange(value);
42008
41964
  };
42009
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
41965
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
42010
41966
  "div",
42011
41967
  {
42012
41968
  role: props.multi ? "group" : "radiogroup",
42013
41969
  "aria-label": ariaLabel,
42014
41970
  className: `pt-root ${className}`.trim(),
42015
- children: options.map((opt) => {
42016
- const active = isActive(opt.value);
42017
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
42018
- "button",
42019
- {
42020
- type: "button",
42021
- className: "pt-pill",
42022
- "data-active": active,
42023
- onClick: () => handleToggle(opt.value),
42024
- role: props.multi ? "checkbox" : "radio",
42025
- "aria-checked": active,
42026
- children: [
42027
- opt.icon && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "pt-icon", children: opt.icon }),
42028
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { children: opt.label })
42029
- ]
42030
- },
42031
- opt.value
42032
- );
42033
- })
41971
+ children: [
41972
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("style", { href: "dll-pill-toggle-styles", precedence: "default", children: PILL_TOGGLE_CSS }),
41973
+ options.map((opt) => {
41974
+ const active = isActive(opt.value);
41975
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
41976
+ "button",
41977
+ {
41978
+ type: "button",
41979
+ className: "pt-pill",
41980
+ "data-active": active,
41981
+ onClick: () => handleToggle(opt.value),
41982
+ role: props.multi ? "checkbox" : "radio",
41983
+ "aria-checked": active,
41984
+ children: [
41985
+ opt.icon && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { className: "pt-icon", children: opt.icon }),
41986
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("span", { children: opt.label })
41987
+ ]
41988
+ },
41989
+ opt.value
41990
+ );
41991
+ })
41992
+ ]
42034
41993
  }
42035
41994
  );
42036
41995
  }
@@ -42038,7 +41997,6 @@ function PillToggle(props) {
42038
41997
  // src/components/ui/tag-input/index.tsx
42039
41998
  var import_react80 = require("react");
42040
41999
  var import_jsx_runtime130 = require("react/jsx-runtime");
42041
- var STYLE_ID7 = "dll-tag-input-styles";
42042
42000
  var TAG_INPUT_CSS = `
42043
42001
  .ti-root {
42044
42002
  --ti-accent: var(--primary, #3b82f6);
@@ -42147,14 +42105,6 @@ var TAG_INPUT_CSS = `
42147
42105
  font-variant-numeric: tabular-nums;
42148
42106
  }
42149
42107
  `;
42150
- function ensureStylesInjected7() {
42151
- if (typeof document === "undefined") return;
42152
- if (document.getElementById(STYLE_ID7)) return;
42153
- const el = document.createElement("style");
42154
- el.id = STYLE_ID7;
42155
- el.textContent = TAG_INPUT_CSS;
42156
- document.head.appendChild(el);
42157
- }
42158
42108
  var defaultNormalize = (raw) => {
42159
42109
  const trimmed = raw.trim();
42160
42110
  if (!trimmed) return "";
@@ -42174,7 +42124,6 @@ function TagInput({
42174
42124
  onInputChange,
42175
42125
  className = ""
42176
42126
  }) {
42177
- ensureStylesInjected7();
42178
42127
  const [internalInput, setInternalInput] = (0, import_react80.useState)("");
42179
42128
  const isControlled = inputValue !== void 0;
42180
42129
  const input = isControlled ? inputValue : internalInput;
@@ -42222,6 +42171,7 @@ function TagInput({
42222
42171
  if (filteredSuggestions.length >= maxVisibleSuggestions) break;
42223
42172
  }
42224
42173
  return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: `ti-root ${className}`.trim(), children: [
42174
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("style", { href: "dll-tag-input-styles", precedence: "default", children: TAG_INPUT_CSS }),
42225
42175
  /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("div", { className: "ti-row", children: [
42226
42176
  /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
42227
42177
  "input",
@@ -42289,7 +42239,7 @@ function TagInput({
42289
42239
  // src/components/ui/sectioned-list-editor/index.tsx
42290
42240
  var import_react81 = require("react");
42291
42241
  var import_jsx_runtime131 = require("react/jsx-runtime");
42292
- var STYLE_ID8 = "dll-sectioned-list-editor-styles";
42242
+ var STYLE_ID2 = "dll-sectioned-list-editor-styles";
42293
42243
  var SECTIONED_LIST_CSS = `
42294
42244
  .sle-root {
42295
42245
  --sle-accent: var(--primary, #3b82f6);
@@ -42502,11 +42452,11 @@ var SECTIONED_LIST_CSS = `
42502
42452
  font-variant-numeric: tabular-nums;
42503
42453
  }
42504
42454
  `;
42505
- function ensureStylesInjected8() {
42455
+ function ensureStylesInjected2() {
42506
42456
  if (typeof document === "undefined") return;
42507
- if (document.getElementById(STYLE_ID8)) return;
42457
+ if (document.getElementById(STYLE_ID2)) return;
42508
42458
  const el = document.createElement("style");
42509
- el.id = STYLE_ID8;
42459
+ el.id = STYLE_ID2;
42510
42460
  el.textContent = SECTIONED_LIST_CSS;
42511
42461
  document.head.appendChild(el);
42512
42462
  }
@@ -42520,7 +42470,7 @@ function SectionedListEditor({
42520
42470
  renderSummary,
42521
42471
  className = ""
42522
42472
  }) {
42523
- ensureStylesInjected8();
42473
+ ensureStylesInjected2();
42524
42474
  const [activeKey, setActiveKey] = (0, import_react81.useState)(sections[0]?.key ?? "");
42525
42475
  const [input, setInput] = (0, import_react81.useState)("");
42526
42476
  const [customName, setCustomName] = (0, import_react81.useState)("");