sellmate-design-system-react 9.0.0-beta.87 → 9.0.0-beta.89

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.d.ts CHANGED
@@ -60,6 +60,7 @@ export * from './components/SStepper';
60
60
  export * from './components/SCalendarBoard';
61
61
  export * from './components/STable';
62
62
  export * from './components/STableBar';
63
+ export * from './components/STreeTable';
63
64
  export * from './components/SKeyValueTable';
64
65
  export * from './components/SBarChart';
65
66
  export * from './components/SLineChart';
package/dist/index.js CHANGED
@@ -7568,10 +7568,7 @@ function toSelectedSet(value) {
7568
7568
  return new Set(value ?? []);
7569
7569
  }
7570
7570
  var TREE_ALL_NODE = { id: "__all__", label: "\uC804\uCCB4" };
7571
- function getSelectionState(node, selectedSet, cascadeSelection) {
7572
- if (!cascadeSelection) {
7573
- return { selected: selectedSet.has(node.id), indeterminate: false };
7574
- }
7571
+ function getSelectionState(node, selectedSet) {
7575
7572
  const selectableChildren = (node.children ?? []).filter(
7576
7573
  (child) => collectSelectableIds(child).length > 0
7577
7574
  );
@@ -7579,7 +7576,7 @@ function getSelectionState(node, selectedSet, cascadeSelection) {
7579
7576
  return { selected: selectedSet.has(node.id), indeterminate: false };
7580
7577
  }
7581
7578
  const childStates = selectableChildren.map(
7582
- (child) => getSelectionState(child, selectedSet, cascadeSelection)
7579
+ (child) => getSelectionState(child, selectedSet)
7583
7580
  );
7584
7581
  const selectedCount = childStates.filter((state2) => state2.selected).length;
7585
7582
  return {
@@ -7850,7 +7847,6 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
7850
7847
  selectable = true,
7851
7848
  size = "sm",
7852
7849
  showSelectAll = false,
7853
- cascadeSelection = true,
7854
7850
  guideline = true,
7855
7851
  border = true,
7856
7852
  leading,
@@ -7911,8 +7907,8 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
7911
7907
  };
7912
7908
  const updateSelected = (node) => {
7913
7909
  if (node.disabled) return;
7914
- const targetIds = cascadeSelection ? collectSelectableIds(node) : [node.id];
7915
- const everySelected = getSelectionState(node, selectedSet, cascadeSelection).selected;
7910
+ const targetIds = collectSelectableIds(node);
7911
+ const everySelected = getSelectionState(node, selectedSet).selected;
7916
7912
  const next = new Set(selectedSet);
7917
7913
  targetIds.forEach((id) => {
7918
7914
  if (everySelected) next.delete(id);
@@ -7990,7 +7986,7 @@ var STreeImpl = /* @__PURE__ */ forwardRef(function STree({
7990
7986
  const renderNodes = (nodes, depth = 1, ancestorLast = []) => nodes.map((node, index) => {
7991
7987
  const isLast = index === nodes.length - 1;
7992
7988
  const isExpanded = expandedSet.has(node.id);
7993
- const { selected, indeterminate } = getSelectionState(node, selectedSet, cascadeSelection);
7989
+ const { selected, indeterminate } = getSelectionState(node, selectedSet);
7994
7990
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
7995
7991
  /* @__PURE__ */ jsx(
7996
7992
  STreeItem2,
@@ -16731,6 +16727,8 @@ var STableImpl = /* @__PURE__ */ forwardRef(function STable({
16731
16727
  contextMenuItems,
16732
16728
  onContextMenuItemClick,
16733
16729
  isRowSelectable,
16730
+ isRowIndeterminate,
16731
+ rowClassName,
16734
16732
  selected = [],
16735
16733
  onSelectedChange,
16736
16734
  sort = null,
@@ -17627,7 +17625,8 @@ var STableImpl = /* @__PURE__ */ forwardRef(function STable({
17627
17625
  "group/table-row",
17628
17626
  rowHover && "hover:bg-[var(--color-grey-05)]",
17629
17627
  (onRowClick || onRowDoubleClick) && "cursor-pointer",
17630
- dragSelectOn && "select-none"
17628
+ dragSelectOn && "select-none",
17629
+ rowClassName?.(row)
17631
17630
  ),
17632
17631
  style: { height: virtualScroll ? effectiveRowHeight : rowH },
17633
17632
  children: [
@@ -17657,7 +17656,7 @@ var STableImpl = /* @__PURE__ */ forwardRef(function STable({
17657
17656
  children: /* @__PURE__ */ jsx("div", { className: "flex select-none items-center justify-center", children: /* @__PURE__ */ jsx(
17658
17657
  SCheckbox,
17659
17658
  {
17660
- value: isSel,
17659
+ value: isSel || !isRowIndeterminate?.(row) ? isSel : null,
17661
17660
  disabled: !canSelectRow(row),
17662
17661
  onValueChange: () => toggleRow(row, rowOffset + ri)
17663
17662
  }
@@ -17907,6 +17906,233 @@ var STableBar = /* @__PURE__ */ forwardRef(function STableBar2({ title, total, s
17907
17906
  }
17908
17907
  );
17909
17908
  });
17909
+ var NO_KEYS = /* @__PURE__ */ new Set();
17910
+ var ROW_ENTER_MS = 200;
17911
+ function STreeTable({
17912
+ rows = [],
17913
+ columns = [],
17914
+ rowKey = "id",
17915
+ childrenKey = "children",
17916
+ resizable = true,
17917
+ treeColumn,
17918
+ expandedKeys,
17919
+ defaultExpandedKeys,
17920
+ onExpandedChange,
17921
+ selectable = false,
17922
+ isRowSelectable,
17923
+ rowClassName,
17924
+ selected = [],
17925
+ onSelectedChange,
17926
+ ...rest
17927
+ }) {
17928
+ const keyOf = (row) => row[rowKey];
17929
+ const childrenOf = (row) => {
17930
+ const children = row[childrenKey];
17931
+ return Array.isArray(children) ? children : [];
17932
+ };
17933
+ const canSelectRow = (row) => isRowSelectable ? isRowSelectable(row) : true;
17934
+ const entries4 = useMemo(() => {
17935
+ const map = /* @__PURE__ */ new Map();
17936
+ const walk = (nodes, depth, parentKey) => {
17937
+ nodes.forEach((row) => {
17938
+ const children = childrenOf(row);
17939
+ map.set(keyOf(row), { row, depth, children, parentKey });
17940
+ walk(children, depth + 1, keyOf(row));
17941
+ });
17942
+ };
17943
+ walk(rows, 0, null);
17944
+ return map;
17945
+ }, [rows, rowKey, childrenKey]);
17946
+ const [innerExpandedKeys, setInnerExpandedKeys] = useState(
17947
+ () => defaultExpandedKeys ?? rows.filter((row) => childrenOf(row).length > 0).map(keyOf)
17948
+ );
17949
+ const currentExpandedKeys = expandedKeys ?? innerExpandedKeys;
17950
+ const expandedSet = useMemo(() => new Set(currentExpandedKeys), [currentExpandedKeys]);
17951
+ const toggleExpanded = (row) => {
17952
+ const key = keyOf(row);
17953
+ const next = expandedSet.has(key) ? currentExpandedKeys.filter((k) => k !== key) : [...currentExpandedKeys, key];
17954
+ if (expandedKeys === void 0) setInnerExpandedKeys(next);
17955
+ onExpandedChange?.(next, row);
17956
+ };
17957
+ const visibleRows = useMemo(() => {
17958
+ const out = [];
17959
+ const walk = (nodes) => {
17960
+ nodes.forEach((row) => {
17961
+ out.push(row);
17962
+ if (expandedSet.has(keyOf(row))) walk(childrenOf(row));
17963
+ });
17964
+ };
17965
+ walk(rows);
17966
+ return out;
17967
+ }, [rows, expandedSet, rowKey, childrenKey]);
17968
+ const [enteringKeys, setEnteringKeys] = useState(NO_KEYS);
17969
+ const prevVisibleRef = useRef(null);
17970
+ useIsomorphicLayoutEffect(() => {
17971
+ const keys = new Set(visibleRows.map(keyOf));
17972
+ const prev = prevVisibleRef.current;
17973
+ prevVisibleRef.current = { rows, keys };
17974
+ if (!prev || prev.rows !== rows) return;
17975
+ const added = [...keys].filter((key) => !prev.keys.has(key));
17976
+ if (added.length > 0) setEnteringKeys(new Set(added));
17977
+ }, [visibleRows]);
17978
+ useEffect(() => {
17979
+ if (enteringKeys.size === 0) return;
17980
+ const timer = setTimeout(() => setEnteringKeys(NO_KEYS), ROW_ENTER_MS);
17981
+ return () => clearTimeout(timer);
17982
+ }, [enteringKeys]);
17983
+ const collectSelectable = (row) => canSelectRow(row) ? [row, ...childrenOf(row).flatMap(collectSelectable)] : [];
17984
+ const selectionOf = (keys) => {
17985
+ const state2 = /* @__PURE__ */ new Map();
17986
+ const visit = (row) => {
17987
+ const children = childrenOf(row);
17988
+ const childStates = children.map(visit);
17989
+ const counted = childStates.filter((_, i) => canSelectRow(children[i]));
17990
+ const result = counted.length === 0 ? { selected: keys.has(keyOf(row)), indeterminate: false } : {
17991
+ selected: counted.every((s) => s.selected),
17992
+ indeterminate: !counted.every((s) => s.selected) && counted.some((s) => s.selected || s.indeterminate)
17993
+ };
17994
+ state2.set(keyOf(row), result);
17995
+ return result;
17996
+ };
17997
+ rows.forEach(visit);
17998
+ return state2;
17999
+ };
18000
+ const selectionState = useMemo(
18001
+ () => selectable ? selectionOf(new Set(selected.map(keyOf))) : null,
18002
+ // eslint-disable-next-line react-hooks/exhaustive-deps
18003
+ [selectable, selected, entries4, isRowSelectable]
18004
+ );
18005
+ const tableSelected = useMemo(() => {
18006
+ if (!selectionState) return selected;
18007
+ return [...entries4.values()].filter((entry) => selectionState.get(keyOf(entry.row))?.selected).map((entry) => entry.row);
18008
+ }, [selectionState, selected, entries4]);
18009
+ const handleSelectedChange = (next) => {
18010
+ const prevKeys = new Set(tableSelected.map(keyOf));
18011
+ const nextKeys = new Set(next.map(keyOf));
18012
+ const keys = new Set(prevKeys);
18013
+ prevKeys.forEach((key) => {
18014
+ if (nextKeys.has(key)) return;
18015
+ const entry = entries4.get(key);
18016
+ keys.delete(key);
18017
+ if (entry) collectSelectable(entry.row).forEach((row) => keys.delete(keyOf(row)));
18018
+ });
18019
+ nextKeys.forEach((key) => {
18020
+ if (prevKeys.has(key)) return;
18021
+ const entry = entries4.get(key);
18022
+ keys.add(key);
18023
+ if (entry) collectSelectable(entry.row).forEach((row) => keys.add(keyOf(row)));
18024
+ });
18025
+ const state2 = selectionOf(keys);
18026
+ onSelectedChange?.(
18027
+ [...entries4.values()].filter((entry) => state2.get(keyOf(entry.row))?.selected).map((entry) => entry.row)
18028
+ );
18029
+ };
18030
+ const treeColumnName = treeColumn ?? columns.find((col) => col.visible !== false)?.name;
18031
+ const tableColumns = useMemo(
18032
+ () => columns.map((col) => {
18033
+ if (col.name !== treeColumnName) return col;
18034
+ if (col.renderCell) {
18035
+ throw new Error(
18036
+ `[STreeTable] \uD2B8\uB9AC \uCEEC\uB7FC(${col.name})\uC5D0\uB294 renderCell \uC744 \uC4F8 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. render \uB97C \uC4F0\uC138\uC694.`
18037
+ );
18038
+ }
18039
+ return {
18040
+ ...col,
18041
+ // 셀 전체를 펼침 영역으로 쓰려면 <td> 에 손을 대야 해서 render 가 아니라 renderCell 로 그린다.
18042
+ // 소비 앱의 render 는 그 안쪽 내용 자리에 그대로 들어간다.
18043
+ renderCell: ({ row, value, className, style }) => {
18044
+ const entry = entries4.get(keyOf(row));
18045
+ const hasChildren = (entry?.children.length ?? 0) > 0;
18046
+ return /* @__PURE__ */ jsx(
18047
+ "td",
18048
+ {
18049
+ className: cn(className, hasChildren && "cursor-pointer"),
18050
+ style,
18051
+ onClick: hasChildren ? (event) => {
18052
+ if (isOwnControl(event.target, event.currentTarget)) return;
18053
+ event.stopPropagation();
18054
+ toggleExpanded(row);
18055
+ } : void 0,
18056
+ onDoubleClick: hasChildren ? (event) => event.stopPropagation() : void 0,
18057
+ children: /* @__PURE__ */ jsx(
18058
+ TreeCell,
18059
+ {
18060
+ depth: entry?.depth ?? 0,
18061
+ hasChildren,
18062
+ expanded: expandedSet.has(keyOf(row)),
18063
+ children: col.render ? col.render(row, value) : value
18064
+ }
18065
+ )
18066
+ }
18067
+ );
18068
+ }
18069
+ };
18070
+ }),
18071
+ // eslint-disable-next-line react-hooks/exhaustive-deps
18072
+ [columns, treeColumnName, entries4, expandedSet, currentExpandedKeys]
18073
+ );
18074
+ return /* @__PURE__ */ jsx(
18075
+ STable2,
18076
+ {
18077
+ ...rest,
18078
+ columns: tableColumns,
18079
+ rows: visibleRows,
18080
+ rowKey,
18081
+ resizable,
18082
+ selectable,
18083
+ isRowSelectable,
18084
+ isRowIndeterminate: selectionState ? (row) => !!selectionState.get(keyOf(row))?.indeterminate : void 0,
18085
+ rowClassName: (row) => cn(
18086
+ rowClassName?.(row),
18087
+ // 위에서 4px 내려오며 나타난다(theme.css --animate-table-row-in). 모션을 줄인 환경에서는 끈다
18088
+ enteringKeys.has(keyOf(row)) && "motion-safe:animate-table-row-in"
18089
+ ) || void 0,
18090
+ selected: tableSelected,
18091
+ onSelectedChange: handleSelectedChange
18092
+ }
18093
+ );
18094
+ }
18095
+ var OWN_CONTROL_SELECTOR = 'a, button, input, select, textarea, label, [role="button"], [role="checkbox"], [contenteditable="true"]';
18096
+ function isOwnControl(target, cell) {
18097
+ if (!(target instanceof Element)) return false;
18098
+ if (target.closest("[data-tree-toggle]")) return false;
18099
+ const control = target.closest(OWN_CONTROL_SELECTOR);
18100
+ return control != null && cell.contains(control);
18101
+ }
18102
+ function TreeCell({
18103
+ depth,
18104
+ hasChildren,
18105
+ expanded,
18106
+ children
18107
+ }) {
18108
+ return /* @__PURE__ */ jsxs(
18109
+ "div",
18110
+ {
18111
+ className: "flex min-w-0 items-center gap-(--cmp-tree-item-contentGap)",
18112
+ style: {
18113
+ paddingLeft: `calc(${depth} * (var(--cmp-ghostButton-xxs-size) + var(--cmp-tree-item-contentGap)))`
18114
+ },
18115
+ children: [
18116
+ hasChildren ? (
18117
+ // 누르면(키보드 Enter·Space 포함) 클릭이 셀로 올라가 셀이 접고 편다 — 버튼은 따로 처리하지 않는다
18118
+ /* @__PURE__ */ jsx("span", { "data-tree-toggle": true, className: "flex shrink-0", children: /* @__PURE__ */ jsx(
18119
+ SGhostButton,
18120
+ {
18121
+ icon: expanded ? "caretDown" : "caretRight",
18122
+ size: "xxs",
18123
+ ariaLabel: expanded ? "collapse row" : "expand row",
18124
+ ariaExpanded: expanded
18125
+ }
18126
+ ) })
18127
+ ) : (
18128
+ // 하위 행이 없는 행도 버튼 자리를 비워 형제끼리 내용의 시작점을 맞춘다
18129
+ /* @__PURE__ */ jsx("span", { className: "size-(--cmp-ghostButton-xxs-size) shrink-0", "aria-hidden": "true" })
18130
+ ),
18131
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children })
18132
+ ]
18133
+ }
18134
+ );
18135
+ }
17910
18136
  var HIDE_DELAY_MS2 = 100;
17911
18137
  function mergeRefs(...refs) {
17912
18138
  return (node) => {
@@ -22984,7 +23210,8 @@ function SRadioButton({
22984
23210
  ].join(" "),
22985
23211
  background: od ? "var(--cmp-radioButton-bg-disabled)" : ro ? "var(--cmp-radioButton-bg-readOnly)" : "var(--cmp-radioButton-bg-default)",
22986
23212
  borderColor: od ? "var(--cmp-radioButton-border-disabled)" : selected ? ro ? "var(--cmp-radioButton-border-readOnly)" : "var(--cmp-radioButton-border-select)" : "var(--cmp-radioButton-border-default)",
22987
- color: od || ro && !selected ? "var(--cmp-radioButton-content-disabled)" : selected && !ro ? "var(--cmp-radioButton-content-select)" : "var(--cmp-radioButton-content-default)"
23213
+ color: od || ro && !selected ? "var(--cmp-radioButton-content-disabled)" : selected && !ro ? "var(--cmp-radioButton-content-select)" : "var(--cmp-radioButton-content-default)",
23214
+ opacity: ro && !selected ? "var(--opacity-060)" : void 0
22988
23215
  },
22989
23216
  children: o.label
22990
23217
  },
@@ -28582,6 +28809,6 @@ function STimeRangePicker({
28582
28809
  );
28583
28810
  }
28584
28811
 
28585
- export { ACCOUNT_LIST_BOX_ICONS, ACCOUNT_LIST_BOX_ITEM_TONES, ACCOUNT_LIST_BOX_LABELS, ACCOUNT_LIST_BOX_LAYOUT, ACCOUNT_LIST_BOX_TONE_CONFIG, BADGE_COLORS, BAR_GAP, BAR_SIZE_MAX, BAR_SIZE_MIN, BUTTON_COLORS, BUTTON_SIZES, CALENDAR_BOARD_DAY_BG, CALENDAR_BOARD_DAY_COLORS, CALENDAR_BOARD_EVENT_COLORS, CALENDAR_BOARD_EVENT_PRESETS, CALENDAR_BOARD_MAX_VISIBLE_EVENTS, CHAT_ATTACHED_FILE_CONFIG, CHAT_FILE_CONFIG, CHAT_MESSAGE_DIRECTIONS, CHAT_MESSAGE_READ_STATUSES, CHAT_MESSAGE_VARIANTS, CHIP_COLORS, COLOR_KEYS, CONTEXT_ALERT_ICON_COLOR, CONTEXT_ALERT_INTENTS, CONTEXT_ALERT_SURFACE, FIELD_WIDTH_GRADES, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, GNB_SYSTEM_COLORS, GNB_SYSTEM_COLOR_CONFIG, GNB_SYSTEM_LAYOUT, GNB_SYSTEM_PLACEMENTS, GNB_SYSTEM_TOP_COLOR_CONFIG, ICONS, IMAGE_FITS, LAUNCHER_LIST_BOX_CONSOLE_HEIGHT, LAUNCHER_LIST_BOX_CONSOLE_ICON, LAUNCHER_LIST_BOX_CONSOLE_LABEL, LAUNCHER_LIST_BOX_LAYOUT, LAUNCHER_LIST_BOX_LOGO_HEIGHT, LAUNCHER_LIST_BOX_TRAILING_ICON, LAUNCHER_LIST_BOX_WIDTH, LAUNCHER_SERVICES, LAUNCHER_SERVICE_CATALOG, LOGO_DEFAULT_SIZE, LOGO_DIRECTIONS, LOGO_MODES, LOGO_NAMES, PAGE_BACKGROUNDS, PAGE_CONTENT_HEIGHTS, PAGE_CONTENT_WIDTHS, PAGE_HEADER_VARIANTS, PAGE_PADDINGS, RangeCalendar, SAccountListBox, SActionModal, SBadge, SBarChart, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCalendarBoard, SCallout, SCard, SChatAttachedFile2 as SChatAttachedFile, SChatFile2 as SChatFile, SChatInput2 as SChatInput, SChatMessage2 as SChatMessage, SChatSystemMessage2 as SChatSystemMessage, SCheckbox, SChip2 as SChip, SChipFilter, SChipInput, SCircleProgress, SConfirmModal, SContextAlert, SDatePicker, SDatePickerMonthListbox, SDatePickerYearListbox, SDateRangePicker, SDivider, SDonutChart, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDrawer, SDropdownButton2 as SDropdownButton, SEDITOR_DEFAULT_FONT_SIZE, SEDITOR_HEADING_LABELS, SEDITOR_HEADING_LEVELS, SEditor, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGnbSystem, SGnbSystemContext, SGuide, SIcon, SImage, SInput, SKELETON_ANIMATIONS, SKELETON_MODES, SKELETON_TYPES, SKELETON_TYPE_CONFIG, SKeyValueTable, SLAYOUT_MIN_WIDTH, SLauncherListBox, SLayout, SLayoutContext, SLineChart, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoginCard2 as SLoginCard, SLogo, SMeatballButton2 as SMeatballButton, SModal, SModalOutlet, SNumberInput, SPage, SPageHeader, SPagination, SPieChart, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioCard, SRadioCardGroup, SRadioGroup, SSPLITTER_UNITS, SScrollArea, SSearchInput, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SSkeleton, SSplitter2 as SSplitter, SStepper, SSwitch, SSystemActionButton, STEPPER_SIZES, STable2 as STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, STimeline2 as STimeline, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, SYSTEM_ACTION_BUTTON_COLORS, SYSTEM_ACTION_BUTTON_COLOR_CONFIG, SYSTEM_ACTION_BUTTON_LAYOUT, SYSTEM_ACTION_BUTTON_TYPES, SYSTEM_ACTION_BUTTON_TYPE_CONFIG, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, fieldWidthValue, fileExtension, findGnbAncestors, findGnbRailValue, formatFileSize, isColorKey, isFieldWidthGrade, loading, normalizeExtension, resolveColor, useSLayout };
28812
+ export { ACCOUNT_LIST_BOX_ICONS, ACCOUNT_LIST_BOX_ITEM_TONES, ACCOUNT_LIST_BOX_LABELS, ACCOUNT_LIST_BOX_LAYOUT, ACCOUNT_LIST_BOX_TONE_CONFIG, BADGE_COLORS, BAR_GAP, BAR_SIZE_MAX, BAR_SIZE_MIN, BUTTON_COLORS, BUTTON_SIZES, CALENDAR_BOARD_DAY_BG, CALENDAR_BOARD_DAY_COLORS, CALENDAR_BOARD_EVENT_COLORS, CALENDAR_BOARD_EVENT_PRESETS, CALENDAR_BOARD_MAX_VISIBLE_EVENTS, CHAT_ATTACHED_FILE_CONFIG, CHAT_FILE_CONFIG, CHAT_MESSAGE_DIRECTIONS, CHAT_MESSAGE_READ_STATUSES, CHAT_MESSAGE_VARIANTS, CHIP_COLORS, COLOR_KEYS, CONTEXT_ALERT_ICON_COLOR, CONTEXT_ALERT_INTENTS, CONTEXT_ALERT_SURFACE, FIELD_WIDTH_GRADES, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, GNB_SYSTEM_COLORS, GNB_SYSTEM_COLOR_CONFIG, GNB_SYSTEM_LAYOUT, GNB_SYSTEM_PLACEMENTS, GNB_SYSTEM_TOP_COLOR_CONFIG, ICONS, IMAGE_FITS, LAUNCHER_LIST_BOX_CONSOLE_HEIGHT, LAUNCHER_LIST_BOX_CONSOLE_ICON, LAUNCHER_LIST_BOX_CONSOLE_LABEL, LAUNCHER_LIST_BOX_LAYOUT, LAUNCHER_LIST_BOX_LOGO_HEIGHT, LAUNCHER_LIST_BOX_TRAILING_ICON, LAUNCHER_LIST_BOX_WIDTH, LAUNCHER_SERVICES, LAUNCHER_SERVICE_CATALOG, LOGO_DEFAULT_SIZE, LOGO_DIRECTIONS, LOGO_MODES, LOGO_NAMES, PAGE_BACKGROUNDS, PAGE_CONTENT_HEIGHTS, PAGE_CONTENT_WIDTHS, PAGE_HEADER_VARIANTS, PAGE_PADDINGS, RangeCalendar, SAccountListBox, SActionModal, SBadge, SBarChart, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCalendarBoard, SCallout, SCard, SChatAttachedFile2 as SChatAttachedFile, SChatFile2 as SChatFile, SChatInput2 as SChatInput, SChatMessage2 as SChatMessage, SChatSystemMessage2 as SChatSystemMessage, SCheckbox, SChip2 as SChip, SChipFilter, SChipInput, SCircleProgress, SConfirmModal, SContextAlert, SDatePicker, SDatePickerMonthListbox, SDatePickerYearListbox, SDateRangePicker, SDivider, SDonutChart, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDrawer, SDropdownButton2 as SDropdownButton, SEDITOR_DEFAULT_FONT_SIZE, SEDITOR_HEADING_LABELS, SEDITOR_HEADING_LEVELS, SEditor, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGnbSystem, SGnbSystemContext, SGuide, SIcon, SImage, SInput, SKELETON_ANIMATIONS, SKELETON_MODES, SKELETON_TYPES, SKELETON_TYPE_CONFIG, SKeyValueTable, SLAYOUT_MIN_WIDTH, SLauncherListBox, SLayout, SLayoutContext, SLineChart, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoginCard2 as SLoginCard, SLogo, SMeatballButton2 as SMeatballButton, SModal, SModalOutlet, SNumberInput, SPage, SPageHeader, SPagination, SPieChart, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioCard, SRadioCardGroup, SRadioGroup, SSPLITTER_UNITS, SScrollArea, SSearchInput, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SSkeleton, SSplitter2 as SSplitter, SStepper, SSwitch, SSystemActionButton, STEPPER_SIZES, STable2 as STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, STimeline2 as STimeline, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, STreeTable, SYSTEM_ACTION_BUTTON_COLORS, SYSTEM_ACTION_BUTTON_COLOR_CONFIG, SYSTEM_ACTION_BUTTON_LAYOUT, SYSTEM_ACTION_BUTTON_TYPES, SYSTEM_ACTION_BUTTON_TYPE_CONFIG, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, fieldWidthValue, fileExtension, findGnbAncestors, findGnbRailValue, formatFileSize, isColorKey, isFieldWidthGrade, loading, normalizeExtension, resolveColor, useSLayout };
28586
28813
  //# sourceMappingURL=index.js.map
28587
28814
  //# sourceMappingURL=index.js.map