@wipco/sdui 0.19.2 → 0.21.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.
@@ -135,6 +135,85 @@ function OverlayLayer({
135
135
  function HoistedStyle({ id, css }) {
136
136
  return /* @__PURE__ */ jsx("style", { href: id, precedence: "medium", children: css });
137
137
  }
138
+ var ANCHOR_GAP = 8;
139
+ var VIEWPORT_EDGE = 8;
140
+ function anchorTo(host, height) {
141
+ if (!host || typeof window === "undefined") return null;
142
+ const rect = host.getBoundingClientRect();
143
+ const below = window.innerHeight - rect.bottom;
144
+ const up = below < height && rect.top > below;
145
+ return {
146
+ left: rect.left,
147
+ top: up ? void 0 : rect.bottom + ANCHOR_GAP,
148
+ bottom: up ? window.innerHeight - rect.top + ANCHOR_GAP : void 0,
149
+ minWidth: rect.width
150
+ };
151
+ }
152
+ function usePopoverAnchor(open, hostRef, popRef, height) {
153
+ const [anchor, setAnchor] = useState(null);
154
+ useLayoutEffect(() => {
155
+ if (!open) {
156
+ setAnchor(null);
157
+ return;
158
+ }
159
+ const place = () => setAnchor(anchorTo(hostRef.current, height));
160
+ place();
161
+ window.addEventListener("scroll", place, true);
162
+ window.addEventListener("resize", place);
163
+ return () => {
164
+ window.removeEventListener("scroll", place, true);
165
+ window.removeEventListener("resize", place);
166
+ };
167
+ }, [open, hostRef, height]);
168
+ useLayoutEffect(() => {
169
+ const el = popRef.current;
170
+ if (!open || !el || !anchor) return;
171
+ const overflow = el.getBoundingClientRect().right - (window.innerWidth - VIEWPORT_EDGE);
172
+ if (overflow <= 1) return;
173
+ setAnchor((prev) => {
174
+ if (!prev) return prev;
175
+ const left = Math.max(VIEWPORT_EDGE, prev.left - overflow);
176
+ return Math.abs(left - prev.left) < 1 ? prev : { ...prev, left };
177
+ });
178
+ }, [open, anchor, popRef]);
179
+ return anchor;
180
+ }
181
+ function AnchoredPopoverStyles() {
182
+ return /* @__PURE__ */ jsx(HoistedStyle, { id: "wp-anchored-pop", css: ANCHORED_POP_CSS });
183
+ }
184
+ var ANCHORED_POP_CSS = `
185
+ .wp-anchored-pop{position:fixed;width:max-content;max-width:min(92vw,400px);background:var(--wp-surface-card);border:1px solid var(--wp-border-subtle);border-radius:var(--wp-radius-lg);box-shadow:var(--wp-shadow-lg);z-index:var(--wp-z-dialog);pointer-events:auto}
186
+ `;
187
+ function anchorStyle(anchor) {
188
+ if (!anchor) return void 0;
189
+ return { left: anchor.left, top: anchor.top, bottom: anchor.bottom, minWidth: anchor.minWidth };
190
+ }
191
+ function usePortalTo() {
192
+ const container = React.useContext(OverlayContainerContext);
193
+ return (anchor, node) => {
194
+ if (!anchor) return null;
195
+ const root = container ?? getOverlayRoot();
196
+ return root ? createPortal(node, root) : node;
197
+ };
198
+ }
199
+ function useDismiss(open, hostRef, popRef, onDismiss) {
200
+ useEffect(() => {
201
+ if (!open) return;
202
+ const handlePointerDown = (event) => {
203
+ const target = event.target;
204
+ if (target instanceof Node && (hostRef.current?.contains(target) || popRef.current?.contains(target))) return;
205
+ onDismiss("outside");
206
+ };
207
+ document.addEventListener("pointerdown", handlePointerDown);
208
+ return () => {
209
+ document.removeEventListener("pointerdown", handlePointerDown);
210
+ };
211
+ }, [open, hostRef, popRef, onDismiss]);
212
+ useOverlayLayer(open, () => onDismiss("escape"), hostRef);
213
+ }
214
+ function focusStaysInside(next, hostRef, popRef) {
215
+ return next instanceof Node && Boolean(hostRef.current?.contains(next) || popRef.current?.contains(next));
216
+ }
138
217
  var YMD_RE = /^\d{4}-\d{2}-\d{2}$/;
139
218
  var HM_RE = /^\d{2}:\d{2}$/;
140
219
  function parseYmd(value) {
@@ -365,71 +444,7 @@ function Calendar({
365
444
  })
366
445
  ] }) });
367
446
  }
368
- function useDismiss(open, hostRef, popRef, onDismiss) {
369
- useEffect(() => {
370
- if (!open) return;
371
- const handlePointerDown = (event) => {
372
- const target = event.target;
373
- if (target instanceof Node && (hostRef.current?.contains(target) || popRef.current?.contains(target))) return;
374
- onDismiss("outside");
375
- };
376
- document.addEventListener("pointerdown", handlePointerDown);
377
- return () => {
378
- document.removeEventListener("pointerdown", handlePointerDown);
379
- };
380
- }, [open, hostRef, popRef, onDismiss]);
381
- useOverlayLayer(open, () => onDismiss("escape"), hostRef);
382
- }
383
447
  var CALENDAR_HEIGHT = 340;
384
- var ANCHOR_GAP = 8;
385
- var VIEWPORT_EDGE = 8;
386
- function anchorTo(host) {
387
- if (!host || typeof window === "undefined") return null;
388
- const rect = host.getBoundingClientRect();
389
- const below = window.innerHeight - rect.bottom;
390
- const up = below < CALENDAR_HEIGHT && rect.top > below;
391
- return {
392
- left: rect.left,
393
- top: up ? void 0 : rect.bottom + ANCHOR_GAP,
394
- bottom: up ? window.innerHeight - rect.top + ANCHOR_GAP : void 0,
395
- minWidth: rect.width
396
- };
397
- }
398
- function usePopoverAnchor(open, hostRef, popRef) {
399
- const [anchor, setAnchor] = useState(null);
400
- useLayoutEffect(() => {
401
- if (!open) {
402
- setAnchor(null);
403
- return;
404
- }
405
- const place = () => setAnchor(anchorTo(hostRef.current));
406
- place();
407
- window.addEventListener("scroll", place, true);
408
- window.addEventListener("resize", place);
409
- return () => {
410
- window.removeEventListener("scroll", place, true);
411
- window.removeEventListener("resize", place);
412
- };
413
- }, [open, hostRef]);
414
- useLayoutEffect(() => {
415
- const el = popRef.current;
416
- if (!open || !el || !anchor) return;
417
- const overflow = el.getBoundingClientRect().right - (window.innerWidth - VIEWPORT_EDGE);
418
- if (overflow > 1) {
419
- setAnchor((prev) => prev ? { ...prev, left: Math.max(VIEWPORT_EDGE, prev.left - overflow) } : prev);
420
- }
421
- }, [open, anchor, popRef]);
422
- return anchor;
423
- }
424
- function anchorStyle(anchor) {
425
- if (!anchor) return void 0;
426
- return { left: anchor.left, top: anchor.top, bottom: anchor.bottom, minWidth: anchor.minWidth };
427
- }
428
- function portal(anchor, container, node) {
429
- if (!anchor) return null;
430
- const root = container ?? getOverlayRoot();
431
- return root ? createPortal(node, root) : node;
432
- }
433
448
  function DateInput({
434
449
  inputRef,
435
450
  value,
@@ -512,8 +527,8 @@ function DatePickerImpl({
512
527
  if (reason === "escape") inputRef.current?.focus();
513
528
  }, []);
514
529
  useDismiss(open, hostRef, popRef, dismiss);
515
- const anchor = usePopoverAnchor(open, hostRef, popRef);
516
- const overlayContainer = React.useContext(OverlayContainerContext);
530
+ const anchor = usePopoverAnchor(open, hostRef, popRef, CALENDAR_HEIGHT);
531
+ const portal = usePortalTo();
517
532
  const isInvalid = Boolean(invalid);
518
533
  const commit = (next) => {
519
534
  if (!isControlled) setInnerValue(next);
@@ -551,13 +566,13 @@ function DatePickerImpl({
551
566
  }
552
567
  };
553
568
  const handleBlur = (event) => {
554
- const next = event.relatedTarget;
555
- if (next instanceof Node && (hostRef.current?.contains(next) || popRef.current?.contains(next))) return;
569
+ if (focusStaysInside(event.relatedTarget, hostRef, popRef)) return;
556
570
  if (text !== fieldText) setText(fieldText);
557
571
  setOpen(false);
558
572
  };
559
573
  return /* @__PURE__ */ jsxs("div", { ref: hostRef, className: "wp-dp-host", onBlur: handleBlur, children: [
560
574
  /* @__PURE__ */ jsx(HoistedStyle, { id: "wp-datepicker", css: DP_CSS }),
575
+ /* @__PURE__ */ jsx(AnchoredPopoverStyles, {}),
561
576
  /* @__PURE__ */ jsx(
562
577
  DateInput,
563
578
  {
@@ -579,12 +594,11 @@ function DatePickerImpl({
579
594
  ),
580
595
  portal(
581
596
  anchor,
582
- overlayContainer,
583
597
  /* @__PURE__ */ jsx(
584
598
  "div",
585
599
  {
586
600
  ref: popRef,
587
- className: "wp-dp-pop",
601
+ className: "wp-anchored-pop wp-dp-pop",
588
602
  style: anchorStyle(anchor),
589
603
  role: "dialog",
590
604
  "aria-label": "\uB0A0\uC9DC \uC120\uD0DD \uB2EC\uB825",
@@ -653,8 +667,8 @@ function DateRangePickerImpl({
653
667
  if (reason === "escape") (end === "to" ? toRef : fromRef).current?.focus();
654
668
  }, [end]);
655
669
  useDismiss(open, hostRef, popRef, dismiss);
656
- const anchor = usePopoverAnchor(open, hostRef, popRef);
657
- const overlayContainer = React.useContext(OverlayContainerContext);
670
+ const anchor = usePopoverAnchor(open, hostRef, popRef, CALENDAR_HEIGHT);
671
+ const portal = usePortalTo();
658
672
  const isInvalid = Boolean(invalid);
659
673
  const commit = (nextFrom, nextTo) => {
660
674
  const next = { from: nextFrom || void 0, to: nextTo || void 0 };
@@ -705,8 +719,7 @@ function DateRangePickerImpl({
705
719
  }
706
720
  };
707
721
  const handleBlur = (event) => {
708
- const next = event.relatedTarget;
709
- if (next instanceof Node && (hostRef.current?.contains(next) || popRef.current?.contains(next))) return;
722
+ if (focusStaysInside(event.relatedTarget, hostRef, popRef)) return;
710
723
  if (fromText !== fromValue) setFromText(fromValue);
711
724
  if (toText !== toValue) setToText(toValue);
712
725
  setOpen(false);
@@ -732,6 +745,7 @@ function DateRangePickerImpl({
732
745
  };
733
746
  return /* @__PURE__ */ jsxs("div", { ref: hostRef, className: "wp-dp-host wp-dp-host--range", onBlur: handleBlur, children: [
734
747
  /* @__PURE__ */ jsx(HoistedStyle, { id: "wp-datepicker", css: DP_CSS }),
748
+ /* @__PURE__ */ jsx(AnchoredPopoverStyles, {}),
735
749
  /* @__PURE__ */ jsxs("div", { className: "wp-dp-range", children: [
736
750
  /* @__PURE__ */ jsx(
737
751
  DateInput,
@@ -779,12 +793,11 @@ function DateRangePickerImpl({
779
793
  ] }),
780
794
  portal(
781
795
  anchor,
782
- overlayContainer,
783
796
  /* @__PURE__ */ jsx(
784
797
  "div",
785
798
  {
786
799
  ref: popRef,
787
- className: "wp-dp-pop wp-dp-pop--wide",
800
+ className: "wp-anchored-pop wp-dp-pop wp-dp-pop--wide",
788
801
  style: anchorStyle(anchor),
789
802
  role: "dialog",
790
803
  "aria-label": "\uAE30\uAC04 \uC120\uD0DD \uB2EC\uB825",
@@ -819,7 +832,6 @@ function DateRangePickerImpl({
819
832
  }
820
833
  var DP_CSS = `
821
834
  .wp-dp-host{position:relative}
822
- .wp-dp-pop{position:fixed;width:max-content;max-width:min(92vw,400px);background:var(--wp-surface-card);border:1px solid var(--wp-border-subtle);border-radius:var(--wp-radius-lg);box-shadow:var(--wp-shadow-lg);z-index:var(--wp-z-dialog);pointer-events:auto}
823
835
  .wp-dp-pop--wide{max-width:min(92vw,720px)}
824
836
  .wp-dp-pop__body{padding:var(--wp-space-4);max-height:60vh;overflow:auto}
825
837
  .wp-dp-range{display:flex;align-items:center;gap:var(--wp-space-1)}
@@ -860,4 +872,4 @@ var DP_CSS = `
860
872
  var DatePicker = boxed(DatePickerImpl, "DatePicker");
861
873
  var DateRangePicker = boxed(DateRangePickerImpl, "DateRangePicker");
862
874
 
863
- export { DatePicker, DateRangePicker, HoistedStyle, OverlayContainerContext, OverlayLayer, getOverlayRoot, useOverlayLayer };
875
+ export { AnchoredPopoverStyles, DatePicker, DateRangePicker, HoistedStyle, OverlayContainerContext, OverlayLayer, anchorStyle, focusStaysInside, getOverlayRoot, useDismiss, useOverlayLayer, usePopoverAnchor, usePortalTo };
package/dist/index.d.ts CHANGED
@@ -4,8 +4,8 @@ import { S as SduiPage, a as SduiAction, b as SduiPropValue, c as SduiRule } fro
4
4
  export { d as SduiArgRef, e as SduiCalcRef, f as SduiChild, g as SduiIndexRef, h as SduiItemRef, i as SduiNode, j as SduiPageQuery, k as SduiScalar, l as SduiStateRef } from './types-opTPYysN.js';
5
5
  import { S as SduiBoxProps, a as SduiContainerLayoutProps, b as SduiColumnsScale, c as SduiGapScale, d as SduiWeightScale, e as SduiTextAlignScale } from './layout-B1QrIBm6.js';
6
6
  export { C as CHILD_LAYOUT_PROPS, L as LAYOUT_CSS, f as SduiAlignScale, g as SduiChildLayoutProps, h as SduiSizeScale, i as SduiSpanScale, j as childLayoutFrom, k as columnsClass, l as containerLayoutStyle, m as joinClass, n as mergeStyle, t as typographyStyle } from './layout-B1QrIBm6.js';
7
- import { D as DatePickerProps, a as DateRangePickerProps } from './DatePicker-CPD2cfmG.js';
8
- export { b as DatePicker, c as DateRangePicker, d as DateRangeValue } from './DatePicker-CPD2cfmG.js';
7
+ import { D as DatePickerProps, a as DateRangePickerProps, T as TimePickerProps } from './DatePicker-D2EtpvkQ.js';
8
+ export { b as DatePicker, c as DateRangePicker, d as DateRangeValue, e as TimePicker } from './DatePicker-D2EtpvkQ.js';
9
9
 
10
10
  /**
11
11
  * 호스트 앱 연결점 — ERP에서는 라우터·erpFetch·SSE가 하던 일을
@@ -1541,6 +1541,7 @@ declare const defaultRegistry: {
1541
1541
  Checkbox: typeof Checkbox;
1542
1542
  DatePicker: React.FC<DatePickerProps & SduiBoxProps>;
1543
1543
  DateRangePicker: React.FC<DateRangePickerProps & SduiBoxProps>;
1544
+ TimePicker: React.FC<TimePickerProps & SduiBoxProps>;
1544
1545
  Dialog: typeof SduiDialog;
1545
1546
  EmptyState: typeof EmptyState;
1546
1547
  Field: typeof Field;
@@ -1830,4 +1831,4 @@ interface ImageViewerProps {
1830
1831
  */
1831
1832
  declare function ImageViewer({ src, alt, open, onClose }: ImageViewerProps): React__default.ReactPortal | null;
1832
1833
 
1833
- export { Actions, type ActionsProps, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Can, type CanProps, Card, type CardProps, type CascadingSearchOption, Checkbox, type CheckboxProps, Col, type ColProps, type CustomActionHandler, type CustomValidator, DatePickerProps, DateRangePickerProps, Dialog, type DialogProps, Divider, EmptyState, type EmptyStateProps, Field, type FieldProps, Grid, type GridCardConfig, type GridCardRow, type GridProps, Icon, IconButton, type IconButtonProps, type IconProps, ImageViewer, type ImageViewerProps, Input, type InputProps, type Justify, type KeyValueItem, KeyValueList, type KeyValueListProps, type MeterTone, NodeErrorBoundary, OverlayContainerContext, OverlayLayer, PageHead, type PageHeadProps, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RemoteSearchResults, type RemoteSearchResultsProps, ResultTable, type ResultTableColumn, type ResultTableProps, Row, type RowProps, SduiAction, type SduiAdapter, type SduiAssetContext, type SduiAssetResolver, type SduiBadgeCell, SduiBoxProps, type SduiCanFn, type SduiCanQuery, type SduiCanSetting, type SduiCell, SduiColumnsScale, SduiContainerLayoutProps, type SduiDateCell, SduiDialog, type SduiDispatch, SduiForm, type SduiFormConfig, type SduiFormProps, SduiGapScale, type SduiGridCard, type SduiGridCardAction, type SduiGridCardRow, type SduiIconCell, type SduiImageCell, type SduiLinkCell, type SduiNumberCell, SduiPage, SduiPermissionProvider, type SduiProgressCell, SduiPropValue, type SduiRegistry, SduiRenderer, type SduiRendererProps, type SduiRowCondition, SduiRule, type SduiRuntime, type SduiSearchAction, type SduiSearchColumn, SduiSearchDataProvider, SduiSearchResults, type SduiSearchResultsProps, type SduiTagCell, SduiTextAlignScale, type SduiTextCell, type SduiUseSpec, SduiWeightScale, type SearchAction, type SearchColumn, type SearchFetcher, type SearchField, type SearchFilter, type SearchOption, type SearchPage, SearchResults, type SearchResultsProps, type SearchRow, SearchToolbar, type SearchValues, type SearchViewItem, Section, type SectionProps, SegmentedControl, type SegmentedControlProps, type SegmentedItem, Select, type SelectOption, type SelectOptionRecord, type SelectProps, Show, type ShowProps, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SidebarNavSection, type SortDir, SortHandle, type SortHandleProps, SortableList, type SortableListProps, Spacer, type SpacerProps, type SpecIssue, Spinner, type SpinnerProps, StatCard, type StatCardProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextPreset, type TextProps, Textarea, type TextareaProps, Toast, type ToastProps, Tooltip, type TooltipProps, boxed, cascadingValuePaths, cellRenderer, cleanSearchValues, createRegistry, defaultAdapter, defaultRegistry, getOverlayRoot, imageRenderer, includesLooseSearch, joinMultiValue, normalizePageSizes, normalizeSearchText, searchFieldKeys, searchValuesFromParams, sortableDropIndex, sortableMove, splitMultiValue, useOverlayLayer, useRemoteSearchPage, useSduiAssetResolver, useSduiCan, useSduiDispatch, useSduiRuntime, useSduiSandbox, useSearchFetcher, validateSpec };
1834
+ export { Actions, type ActionsProps, Alert, type AlertProps, Avatar, type AvatarProps, Badge, type BadgeProps, type BadgeTone, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Can, type CanProps, Card, type CardProps, type CascadingSearchOption, Checkbox, type CheckboxProps, Col, type ColProps, type CustomActionHandler, type CustomValidator, DatePickerProps, DateRangePickerProps, Dialog, type DialogProps, Divider, EmptyState, type EmptyStateProps, Field, type FieldProps, Grid, type GridCardConfig, type GridCardRow, type GridProps, Icon, IconButton, type IconButtonProps, type IconProps, ImageViewer, type ImageViewerProps, Input, type InputProps, type Justify, type KeyValueItem, KeyValueList, type KeyValueListProps, type MeterTone, NodeErrorBoundary, OverlayContainerContext, OverlayLayer, PageHead, type PageHeadProps, Pagination, type PaginationProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RemoteSearchResults, type RemoteSearchResultsProps, ResultTable, type ResultTableColumn, type ResultTableProps, Row, type RowProps, SduiAction, type SduiAdapter, type SduiAssetContext, type SduiAssetResolver, type SduiBadgeCell, SduiBoxProps, type SduiCanFn, type SduiCanQuery, type SduiCanSetting, type SduiCell, SduiColumnsScale, SduiContainerLayoutProps, type SduiDateCell, SduiDialog, type SduiDispatch, SduiForm, type SduiFormConfig, type SduiFormProps, SduiGapScale, type SduiGridCard, type SduiGridCardAction, type SduiGridCardRow, type SduiIconCell, type SduiImageCell, type SduiLinkCell, type SduiNumberCell, SduiPage, SduiPermissionProvider, type SduiProgressCell, SduiPropValue, type SduiRegistry, SduiRenderer, type SduiRendererProps, type SduiRowCondition, SduiRule, type SduiRuntime, type SduiSearchAction, type SduiSearchColumn, SduiSearchDataProvider, SduiSearchResults, type SduiSearchResultsProps, type SduiTagCell, SduiTextAlignScale, type SduiTextCell, type SduiUseSpec, SduiWeightScale, type SearchAction, type SearchColumn, type SearchFetcher, type SearchField, type SearchFilter, type SearchOption, type SearchPage, SearchResults, type SearchResultsProps, type SearchRow, SearchToolbar, type SearchValues, type SearchViewItem, Section, type SectionProps, SegmentedControl, type SegmentedControlProps, type SegmentedItem, Select, type SelectOption, type SelectOptionRecord, type SelectProps, Show, type ShowProps, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SidebarNavSection, type SortDir, SortHandle, type SortHandleProps, SortableList, type SortableListProps, Spacer, type SpacerProps, type SpecIssue, Spinner, type SpinnerProps, StatCard, type StatCardProps, Switch, type SwitchProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextPreset, type TextProps, Textarea, type TextareaProps, TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, boxed, cascadingValuePaths, cellRenderer, cleanSearchValues, createRegistry, defaultAdapter, defaultRegistry, getOverlayRoot, imageRenderer, includesLooseSearch, joinMultiValue, normalizePageSizes, normalizeSearchText, searchFieldKeys, searchValuesFromParams, sortableDropIndex, sortableMove, splitMultiValue, useOverlayLayer, useRemoteSearchPage, useSduiAssetResolver, useSduiCan, useSduiDispatch, useSduiRuntime, useSduiSandbox, useSearchFetcher, validateSpec };
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import { DEV, isSafeNavigationTarget, useSduiAdapter, hostFetchOf, useSduiSandbox, resolveAdapter, assetResolverOf, SduiAdapterContext } from './chunk-WGRB5UL4.js';
2
- export { defaultAdapter, useSduiAssetResolver, useSduiSandbox } from './chunk-WGRB5UL4.js';
1
+ import { DEV, isSafeNavigationTarget, useSduiAdapter, hostFetchOf, TimePicker, useSduiSandbox, resolveAdapter, assetResolverOf, SduiAdapterContext } from './chunk-HPZTFZZN.js';
2
+ export { TimePicker, defaultAdapter, useSduiAssetResolver, useSduiSandbox } from './chunk-HPZTFZZN.js';
3
3
  import { ImageViewer } from './chunk-THEP3VWY.js';
4
4
  export { ImageViewer } from './chunk-THEP3VWY.js';
5
- import { normalizeSearchFields, searchValuesFromParams, splitMultiValue, includesLooseSearch, cascadingValuePaths, SearchToolbar, searchFieldKeys, Popover } from './chunk-GUFIEWW2.js';
6
- export { SearchToolbar, cascadingValuePaths, cleanSearchValues, includesLooseSearch, joinMultiValue, normalizeSearchText, searchFieldKeys, searchValuesFromParams, splitMultiValue } from './chunk-GUFIEWW2.js';
7
- import { HoistedStyle, DateRangePicker, DatePicker, OverlayLayer } from './chunk-IY7SMV6V.js';
8
- export { DatePicker, DateRangePicker, OverlayContainerContext, OverlayLayer, getOverlayRoot, useOverlayLayer } from './chunk-IY7SMV6V.js';
5
+ import { normalizeSearchFields, searchValuesFromParams, splitMultiValue, includesLooseSearch, cascadingValuePaths, SearchToolbar, searchFieldKeys, Popover } from './chunk-U7ZK7WYH.js';
6
+ export { SearchToolbar, cascadingValuePaths, cleanSearchValues, includesLooseSearch, joinMultiValue, normalizeSearchText, searchFieldKeys, searchValuesFromParams, splitMultiValue } from './chunk-U7ZK7WYH.js';
7
+ import { HoistedStyle, DateRangePicker, DatePicker, OverlayLayer } from './chunk-XKLUCUVA.js';
8
+ export { DatePicker, DateRangePicker, OverlayContainerContext, OverlayLayer, getOverlayRoot, useOverlayLayer } from './chunk-XKLUCUVA.js';
9
9
  import { EmptyState, Button, Checkbox, SegmentedControl, Spinner, Select, Pagination, Icon, Card, Badge, ProgressBar, Tag, Toast, Textarea, Tabs, Table, Switch, StatCard, Input, IconButton, Field, Alert, warnOnce, Dialog } from './chunk-WIDDHR7L.js';
10
10
  export { Alert, Avatar, Badge, Breadcrumb, Button, Card, Checkbox, Dialog, EmptyState, Field, Icon, IconButton, Input, Pagination, ProgressBar, Radio, SegmentedControl, Select, SidebarNav, Spinner, StatCard, Switch, Table, Tabs, Tag, Textarea, Toast, Tooltip } from './chunk-WIDDHR7L.js';
11
11
  import { boxed, mergeStyle, containerLayoutStyle, joinClass, columnsClass, typographyStyle, LAYOUT_CSS, childLayoutFrom, CHILD_LAYOUT_PROPS } from './chunk-SAN4IX6N.js';
@@ -1725,6 +1725,7 @@ var defaultRegistry = {
1725
1725
  Checkbox,
1726
1726
  DatePicker,
1727
1727
  DateRangePicker,
1728
+ TimePicker,
1728
1729
  // Dialog는 표준 닫기 UX(Escape·배경 클릭)가 붙은 래퍼로 등록한다
1729
1730
  Dialog: SduiDialog,
1730
1731
  EmptyState,
package/dist/meta.d.ts CHANGED
@@ -285,6 +285,7 @@ declare const ButtonMeta: SduiComponentMeta;
285
285
  declare const CheckboxMeta: SduiComponentMeta;
286
286
  declare const DatePickerMeta: SduiComponentMeta;
287
287
  declare const DateRangePickerMeta: SduiComponentMeta;
288
+ declare const TimePickerMeta: SduiComponentMeta;
288
289
  declare const FieldMeta: SduiComponentMeta;
289
290
  declare const FormMeta: SduiComponentMeta;
290
291
  declare const IconButtonMeta: SduiComponentMeta;
@@ -343,6 +344,7 @@ declare const coreComponentMeta: {
343
344
  Checkbox: SduiComponentMeta;
344
345
  Col: SduiComponentMeta;
345
346
  DatePicker: SduiComponentMeta;
347
+ TimePicker: SduiComponentMeta;
346
348
  DateRangePicker: SduiComponentMeta;
347
349
  Dialog: SduiComponentMeta;
348
350
  Divider: SduiComponentMeta;
@@ -440,6 +442,7 @@ declare const OrgChartMeta: SduiComponentMeta;
440
442
  declare const SummaryTableMeta: SduiComponentMeta;
441
443
  declare const TreeViewMeta: SduiComponentMeta;
442
444
  declare const PrintSheetMeta: SduiComponentMeta;
445
+ declare const RecordSheetMeta: SduiComponentMeta;
443
446
  declare const SecureScreenMeta: SduiComponentMeta;
444
447
  declare const StripMeta: SduiComponentMeta;
445
448
  /**
@@ -465,6 +468,7 @@ declare const widgetComponentMeta: {
465
468
  OrgChart: SduiComponentMeta;
466
469
  PeriodFilter: SduiComponentMeta;
467
470
  PrintSheet: SduiComponentMeta;
471
+ RecordSheet: SduiComponentMeta;
468
472
  SearchableMultiPicker: SduiComponentMeta;
469
473
  SecureScreen: SduiComponentMeta;
470
474
  StackedMeter: SduiComponentMeta;
@@ -555,11 +559,11 @@ declare const SDUI_CATEGORIES: ReadonlyArray<{
555
559
  label: string;
556
560
  }>;
557
561
  /**
558
- * 라이브러리가 아는 어휘 전체 — 기본 41 + rich 2 + 위젯 21 + DS 6 + 렌더러 내장 2 = 72종.
562
+ * 라이브러리가 아는 어휘 전체 — 기본 42 + rich 2 + 위젯 22 + DS 6 + 렌더러 내장 2 = 74종.
559
563
  * 편집기처럼 어휘 전부를 다뤄야 하는 쪽에서 쓴다.
560
564
  *
561
565
  * **레지스트리와 일대일이 아니다.** `defaultRegistry`에 없는 것도 들어 있다 —
562
- * rich 2종, 위젯 21종, DS 6종은 소비자가 `createRegistry`로 직접 얹는 어휘라서
566
+ * rich 2종, 위젯 22종, DS 6종은 소비자가 `createRegistry`로 직접 얹는 어휘라서
563
567
  * 여기 있다고 곧바로 렌더되지는 않는다. 이 목록은 "빌더가 프롭을 그릴 줄 아는 이름"이지
564
568
  * "지금 렌더할 수 있는 이름"이 아니다.
565
569
  *
@@ -584,4 +588,4 @@ declare function paletteGroups(catalog?: Record<string, SduiComponentMeta>): Arr
584
588
  items: SduiComponentMeta[];
585
589
  }>;
586
590
 
587
- export { ActionsMeta, AlertMeta, AutocompleteFieldMeta, AvatarMeta, BadgeMeta, BreadcrumbMeta, ButtonMeta, CanMeta, CardMeta, ChartMeta, CheckboxMeta, ColMeta, ColumnBoardMeta, DatePickerMeta, DateRangePickerMeta, DialogMeta, DiffViewMeta, DisclosureMeta, DividerMeta, EmptyStateMeta, EventCalendarMeta, FieldMeta, ForEachMeta, FormMeta, FragmentMeta, GridMeta, IconButtonMeta, IconMeta, ImageLightboxMeta, InlineEditMeta, InputMeta, JsonFieldMeta, KeyValueListMeta, LiveClockMeta, MapPreviewMeta, OrgChartMeta, PageHeadMeta, PaginationMeta, PeriodFilterMeta, PrintSheetMeta, ProgressBarMeta, RadioMeta, RemoteSearchResultsMeta, RowMeta, SDUI_CATEGORIES, SELF_AXIS_PROPS, type SduiCategory, type SduiChildrenMeta, type SduiComponentMeta, type SduiDomMeta, type SduiEnumOption, type SduiPropGroup, type SduiPropKind, type SduiPropMeta, type SduiResizeMeta, type SduiSlotMeta, SearchResultsMeta, SearchableMultiPickerMeta, SectionMeta, SecureScreenMeta, SegmentedControlMeta, SelectMeta, ShowMeta, SidebarNavMeta, SortHandleMeta, SortableListMeta, SpacerMeta, SpinnerMeta, StackedMeterMeta, StatCardMeta, StripMeta, SummaryTableMeta, SwitchMeta, TableMeta, TabsMeta, TagMeta, TagMultiSelectMeta, TextMeta, TextareaMeta, TimelineMeta, ToastMeta, TooltipMeta, TreePickerMeta, TreeViewMeta, allComponentMeta, builtinComponentMeta, coreComponentMeta, dsComponentMeta, getComponentMeta, paletteGroups, richComponentMeta, slotNamesOf, widgetComponentMeta, withSelfAxis, withSelfAxisAll };
591
+ export { ActionsMeta, AlertMeta, AutocompleteFieldMeta, AvatarMeta, BadgeMeta, BreadcrumbMeta, ButtonMeta, CanMeta, CardMeta, ChartMeta, CheckboxMeta, ColMeta, ColumnBoardMeta, DatePickerMeta, DateRangePickerMeta, DialogMeta, DiffViewMeta, DisclosureMeta, DividerMeta, EmptyStateMeta, EventCalendarMeta, FieldMeta, ForEachMeta, FormMeta, FragmentMeta, GridMeta, IconButtonMeta, IconMeta, ImageLightboxMeta, InlineEditMeta, InputMeta, JsonFieldMeta, KeyValueListMeta, LiveClockMeta, MapPreviewMeta, OrgChartMeta, PageHeadMeta, PaginationMeta, PeriodFilterMeta, PrintSheetMeta, ProgressBarMeta, RadioMeta, RecordSheetMeta, RemoteSearchResultsMeta, RowMeta, SDUI_CATEGORIES, SELF_AXIS_PROPS, type SduiCategory, type SduiChildrenMeta, type SduiComponentMeta, type SduiDomMeta, type SduiEnumOption, type SduiPropGroup, type SduiPropKind, type SduiPropMeta, type SduiResizeMeta, type SduiSlotMeta, SearchResultsMeta, SearchableMultiPickerMeta, SectionMeta, SecureScreenMeta, SegmentedControlMeta, SelectMeta, ShowMeta, SidebarNavMeta, SortHandleMeta, SortableListMeta, SpacerMeta, SpinnerMeta, StackedMeterMeta, StatCardMeta, StripMeta, SummaryTableMeta, SwitchMeta, TableMeta, TabsMeta, TagMeta, TagMultiSelectMeta, TextMeta, TextareaMeta, TimePickerMeta, TimelineMeta, ToastMeta, TooltipMeta, TreePickerMeta, TreeViewMeta, allComponentMeta, builtinComponentMeta, coreComponentMeta, dsComponentMeta, getComponentMeta, paletteGroups, richComponentMeta, slotNamesOf, widgetComponentMeta, withSelfAxis, withSelfAxisAll };
package/dist/meta.js CHANGED
@@ -991,6 +991,46 @@ var DateRangePickerMeta = {
991
991
  },
992
992
  resize: { kind: "none" }
993
993
  };
994
+ var TimePickerMeta = {
995
+ name: "TimePicker",
996
+ label: "\uC2DC\uAC01 \uC120\uD0DD",
997
+ category: "input",
998
+ icon: "clock",
999
+ description: "\uC2DC\uAC01(HH:MM, 24\uC2DC\uAC04\uC81C) \u2014 \uD0A4\uBCF4\uB4DC\uB85C \uCCD0\uB3C4 \uB418\uACE0 \uB208\uAE08 \uBAA9\uB85D\uC5D0\uC11C \uACE8\uB77C\uB3C4 \uB41C\uB2E4.",
1000
+ props: [
1001
+ { name: "value", kind: "string", label: "\uAC12(HH:MM)", bindable: true, group: "data" },
1002
+ { name: "onChange", kind: "action", label: "\uBCC0\uACBD", eventArg: "HH:MM \uBB38\uC790\uC5F4", group: "behavior" },
1003
+ { name: "min", kind: "string", label: "\uCD5C\uC18C \uC2DC\uAC01", description: "HH:MM, \uD3EC\uD568", bindable: true, group: "validation" },
1004
+ { name: "max", kind: "string", label: "\uCD5C\uB300 \uC2DC\uAC01", description: "HH:MM, \uD3EC\uD568", bindable: true, group: "validation" },
1005
+ { name: "step", kind: "number", label: "\uB208\uAE08 \uAC04\uACA9(\uBD84)", default: 30, group: "behavior" },
1006
+ { name: "placeholder", kind: "string", label: "\uC548\uB0B4 \uBB38\uAD6C", description: "\uAE30\uBCF8\uAC12\uC740 HH:MM", group: "content" },
1007
+ { name: "invalid", kind: "boolean", label: "\uC624\uB958 \uD45C\uC2DC", default: false, bindable: true, group: "validation" },
1008
+ { name: "disabled", kind: "boolean", label: "\uBE44\uD65C\uC131", default: false, bindable: true, group: "behavior" },
1009
+ {
1010
+ name: "size",
1011
+ kind: "enum",
1012
+ label: "\uD06C\uAE30",
1013
+ default: "md",
1014
+ options: [
1015
+ { value: "sm", label: "sm 28px" },
1016
+ { value: "md", label: "md 32px" },
1017
+ { value: "lg", label: "lg 40px" }
1018
+ ],
1019
+ group: "appearance"
1020
+ }
1021
+ ],
1022
+ children: { accepts: false },
1023
+ dom: { element: "div" },
1024
+ preset: {
1025
+ component: "TimePicker",
1026
+ props: {
1027
+ placeholder: "HH:MM",
1028
+ value: { $state: "time", default: "" },
1029
+ onChange: { action: "setState", key: "time", fromEvent: true }
1030
+ }
1031
+ },
1032
+ resize: { kind: "enum", prop: "size", values: ["sm", "md", "lg"] }
1033
+ };
994
1034
  var FieldMeta = {
995
1035
  name: "Field",
996
1036
  label: "\uD3FC \uD544\uB4DC",
@@ -2665,6 +2705,7 @@ var coreComponentMeta = {
2665
2705
  Checkbox: CheckboxMeta,
2666
2706
  Col: ColMeta,
2667
2707
  DatePicker: DatePickerMeta,
2708
+ TimePicker: TimePickerMeta,
2668
2709
  DateRangePicker: DateRangePickerMeta,
2669
2710
  Dialog: DialogMeta,
2670
2711
  Divider: DividerMeta,
@@ -4437,6 +4478,146 @@ var PrintSheetMeta = {
4437
4478
  },
4438
4479
  resize: { kind: "none" }
4439
4480
  };
4481
+ var RecordSheetMeta = {
4482
+ name: "RecordSheet",
4483
+ label: "\uC591\uC2DD \uD45C",
4484
+ category: "data",
4485
+ icon: "layout-grid",
4486
+ description: "\uCE78\uC744 \uBCD1\uD569\uD574 \uC4F0\uB294 \uC885\uC774 \uC11C\uC2DD\uC6A9 \uD45C(\uC778\uC0AC\uAE30\uB85D\uCE74\uB4DC \uB4F1). \uACA9\uC790 \uC5F4 \uC218\uB97C \uC815\uD558\uACE0 \uCE78\uB9C8\uB2E4 \uBA87 \uCE78\uC744 \uCC28\uC9C0\uD560\uC9C0 \uC801\uB294\uB2E4 \u2014 \uAD6C\uD68D\uC774 \uB2EC\uB77C\uB3C4 \uC138\uB85C\uC120\uC774 \uD558\uB098\uB85C \uC774\uC5B4\uC9C4\uB2E4.",
4487
+ props: [
4488
+ {
4489
+ name: "columns",
4490
+ kind: "number",
4491
+ label: "\uACA9\uC790 \uC5F4 \uC218",
4492
+ default: 24,
4493
+ description: "\uBAA8\uB4E0 \uCE78 \uBCD1\uD569(span)\uC758 \uAE30\uC900. 24\uBA74 2\xB73\xB74\xB76\xB78\xB712 \uB4F1\uBD84\uC774 \uB531 \uB5A8\uC5B4\uC9C4\uB2E4.",
4494
+ group: "layout"
4495
+ },
4496
+ { name: "title", kind: "string", label: "\uD45C \uC81C\uBAA9 \uC904", bindable: true, group: "content" },
4497
+ {
4498
+ name: "rows",
4499
+ kind: "array",
4500
+ label: "\uC904",
4501
+ required: true,
4502
+ group: "data",
4503
+ description: "\uC704\uC5D0\uC11C \uC544\uB798\uB85C \uADF8\uB9B4 \uC904 \uBAA9\uB85D. \uAC01 \uC904\uC740 \uCE78 \uBAA9\uB85D\uC774\uAC70\uB098, \uBC30\uC5F4\uC744 \uB418\uD480\uC774\uD558\uB294 \uC904\uC774\uB2E4.",
4504
+ item: [
4505
+ {
4506
+ name: "gap",
4507
+ kind: "boolean",
4508
+ label: "\uBE48 \uC904",
4509
+ description: "\uD14C\uB450\uB9AC \uC5C6\uB294 \uC5EC\uBC31 \uC904 \u2014 \uAD6C\uD68D \uC0AC\uC774\uB97C \uB744\uC6B4\uB2E4. \uCF1C\uBA74 \uB098\uBA38\uC9C0\uB294 \uBB34\uC2DC\uB41C\uB2E4."
4510
+ },
4511
+ {
4512
+ name: "repeat",
4513
+ kind: "binding",
4514
+ label: "\uB418\uD480\uC774\uD560 \uBC30\uC5F4\uB4E4",
4515
+ bindable: true,
4516
+ description: "\uBC30\uC5F4\uC758 \uBC30\uC5F4. \uC5EC\uB7FF \uC8FC\uBA74 \uB098\uB780\uD788 \uB193\uACE0 \uAC00\uC7A5 \uAE34 \uAC83\uC5D0 \uB9DE\uCD98\uB2E4 \u2014 \uC67C\uCABD \uD559\uB825\xB7\uC624\uB978\uCABD \uC790\uACA9\uCC98\uB7FC \uAE38\uC774\uAC00 \uB2E4\uB978 \uBAA9\uB85D\uC744 \uD55C \uACA9\uC790\uC5D0 \uB2F4\uB294\uB2E4."
4517
+ },
4518
+ {
4519
+ name: "minRows",
4520
+ kind: "number",
4521
+ label: "\uCD5C\uC18C \uC904 \uC218",
4522
+ description: "\uAC12\uC774 \uBAA8\uC790\uB77C\uBA74 \uBE48 \uC904\uB85C \uCC44\uC6CC \uC591\uC2DD \uB192\uC774\uB97C \uC9C0\uD0A8\uB2E4."
4523
+ },
4524
+ {
4525
+ name: "cells",
4526
+ kind: "array",
4527
+ label: "\uCE78",
4528
+ item: [
4529
+ { name: "span", kind: "number", label: "\uC5F4 \uBCD1\uD569", default: 1 },
4530
+ { name: "rowSpan", kind: "number", label: "\uD589 \uBCD1\uD569", default: 1 },
4531
+ {
4532
+ name: "kind",
4533
+ kind: "enum",
4534
+ label: "\uCE78 \uC885\uB958",
4535
+ default: "value",
4536
+ options: [
4537
+ { value: "value", label: "\uAC12" },
4538
+ { value: "label", label: "\uBA38\uB9AC\uCE78", description: "\uD68C\uC0C9 \uBC30\uACBD + \uAC00\uC6B4\uB370 \uC815\uB82C" },
4539
+ { value: "section", label: "\uAD6C\uD68D \uC81C\uBAA9", description: "\uAD6C\uD68D \uC704\uC5D0 \uAD75\uC740 \uC120\uC774 \uBD99\uB294\uB2E4" },
4540
+ { value: "photo", label: "\uC0AC\uC9C4", description: "src\uC758 \uC0AC\uC9C4\uC744 \uCC44\uC6B4\uB2E4. \uC5C6\uC73C\uBA74 \uC790\uB9AC \uC0C1\uC790." }
4541
+ ]
4542
+ },
4543
+ { name: "text", kind: "node", label: "\uACE0\uC815 \uAC12", bindable: true },
4544
+ { name: "source", kind: "number", label: "\uBC30\uC5F4 \uBC88\uD638", default: 0, description: "\uB418\uD480\uC774 \uC904\uC5D0\uC11C \uBA87 \uBC88\uC9F8 \uBC30\uC5F4\uC744 \uBCFC\uC9C0." },
4545
+ { name: "field", kind: "string", label: "\uD56D\uBAA9 \uD544\uB4DC" },
4546
+ {
4547
+ name: "fields",
4548
+ kind: "array",
4549
+ label: "\uC774\uC5B4 \uBD99\uC77C \uD544\uB4DC\uB4E4",
4550
+ item: [],
4551
+ itemKind: "string",
4552
+ description: "\uAE30\uAC04 \uCE78(\uC2DC\uC791 ~ \uC885\uB8CC)\uCC98\uB7FC \uB450 \uD544\uB4DC\uB97C \uD55C \uCE78\uC5D0 \uB2F4\uC744 \uB54C."
4553
+ },
4554
+ { name: "separator", kind: "string", label: "\uC774\uC74C\uB9D0", default: " ~ " },
4555
+ {
4556
+ name: "align",
4557
+ kind: "enum",
4558
+ label: "\uC815\uB82C",
4559
+ options: [
4560
+ { value: "left", label: "\uC67C\uCABD" },
4561
+ { value: "center", label: "\uAC00\uC6B4\uB370" },
4562
+ { value: "right", label: "\uC624\uB978\uCABD" }
4563
+ ]
4564
+ },
4565
+ { name: "mono", kind: "boolean", label: "\uACE0\uC815\uD3ED \uAE00\uAF34" },
4566
+ { name: "placeholder", kind: "string", label: "\uBE48 \uAC12 \uD45C\uC2DC", default: "-" },
4567
+ { name: "src", kind: "string", label: "\uC0AC\uC9C4 \uC8FC\uC18C", bindable: true },
4568
+ { name: "alt", kind: "string", label: "\uC0AC\uC9C4 \uB300\uCCB4 \uAE00\uC790", default: "\uC0AC\uC9C4" }
4569
+ ]
4570
+ }
4571
+ ]
4572
+ },
4573
+ {
4574
+ name: "note",
4575
+ kind: "string",
4576
+ label: "\uD45C \uC544\uB798 \uC8FC\uC11D",
4577
+ bindable: true,
4578
+ group: "content",
4579
+ description: "\uC624\uB978\uCABD \uC544\uB798\uC5D0 \uC791\uAC8C \uBD99\uB294 \uD55C \uC904(\uCD9C\uB825\uC77C \uB4F1)."
4580
+ }
4581
+ ],
4582
+ children: { accepts: false },
4583
+ dom: { element: "div" },
4584
+ preset: {
4585
+ component: "RecordSheet",
4586
+ props: {
4587
+ columns: 12,
4588
+ title: "\uC0AC\uC6D0 \uC778\uC0AC\uAE30\uB85D\uCE74\uB4DC",
4589
+ rows: [
4590
+ {
4591
+ cells: [
4592
+ { kind: "label", span: 2, text: "\uC131\uBA85" },
4593
+ { span: 4, text: "\uD64D\uAE38\uB3D9" },
4594
+ { kind: "label", span: 2, text: "\uC0AC\uBC88" },
4595
+ { span: 4, text: "140", mono: true }
4596
+ ]
4597
+ },
4598
+ { gap: true },
4599
+ { cells: [{ kind: "section", span: 12, text: "1) \uD559\uC704 \uBC0F \uD559\uB825\uC0AC\uD56D" }] },
4600
+ {
4601
+ cells: [
4602
+ { kind: "label", span: 5, text: "\uD559\uAD50\uBA85" },
4603
+ { kind: "label", span: 3, text: "\uD559\uC704" },
4604
+ { kind: "label", span: 4, text: "\uC878\uC5C5\uC77C" }
4605
+ ]
4606
+ },
4607
+ {
4608
+ repeat: [[{ institution: "\uC704\uD504\uCF54\uB300\uD559\uAD50", degree: "\uD559\uC0AC", end_date: "2018-02-09" }]],
4609
+ minRows: 2,
4610
+ cells: [
4611
+ { span: 5, field: "institution" },
4612
+ { span: 3, field: "degree", align: "center" },
4613
+ { span: 4, field: "end_date", align: "center", mono: true }
4614
+ ]
4615
+ }
4616
+ ]
4617
+ }
4618
+ },
4619
+ resize: { kind: "none" }
4620
+ };
4440
4621
  var SecureScreenMeta = {
4441
4622
  name: "SecureScreen",
4442
4623
  label: "\uD654\uBA74 \uBCF4\uD638",
@@ -4535,6 +4716,7 @@ var widgetComponentMeta = {
4535
4716
  OrgChart: OrgChartMeta,
4536
4717
  PeriodFilter: PeriodFilterMeta,
4537
4718
  PrintSheet: PrintSheetMeta,
4719
+ RecordSheet: RecordSheetMeta,
4538
4720
  SearchableMultiPicker: SearchableMultiPickerMeta,
4539
4721
  SecureScreen: SecureScreenMeta,
4540
4722
  StackedMeter: StackedMeterMeta,
@@ -4579,4 +4761,4 @@ function paletteGroups(catalog = allComponentMeta) {
4579
4761
  })).filter((group) => group.items.length > 0);
4580
4762
  }
4581
4763
 
4582
- export { ActionsMeta, AlertMeta, AutocompleteFieldMeta, AvatarMeta, BadgeMeta, BreadcrumbMeta, ButtonMeta, CanMeta, CardMeta, ChartMeta, CheckboxMeta, ColMeta, ColumnBoardMeta, DatePickerMeta, DateRangePickerMeta, DialogMeta, DiffViewMeta, DisclosureMeta, DividerMeta, EmptyStateMeta, EventCalendarMeta, FieldMeta, ForEachMeta, FormMeta, FragmentMeta, GridMeta, IconButtonMeta, IconMeta, ImageLightboxMeta, InlineEditMeta, InputMeta, JsonFieldMeta, KeyValueListMeta, LiveClockMeta, MapPreviewMeta, OrgChartMeta, PageHeadMeta, PaginationMeta, PeriodFilterMeta, PrintSheetMeta, ProgressBarMeta, RadioMeta, RemoteSearchResultsMeta, RowMeta, SDUI_CATEGORIES, SELF_AXIS_PROPS, SearchResultsMeta, SearchableMultiPickerMeta, SectionMeta, SecureScreenMeta, SegmentedControlMeta, SelectMeta, ShowMeta, SidebarNavMeta, SortHandleMeta, SortableListMeta, SpacerMeta, SpinnerMeta, StackedMeterMeta, StatCardMeta, StripMeta, SummaryTableMeta, SwitchMeta, TableMeta, TabsMeta, TagMeta, TagMultiSelectMeta, TextMeta, TextareaMeta, TimelineMeta, ToastMeta, TooltipMeta, TreePickerMeta, TreeViewMeta, allComponentMeta, builtinComponentMeta, coreComponentMeta, dsComponentMeta, getComponentMeta, paletteGroups, richComponentMeta, slotNamesOf, widgetComponentMeta, withSelfAxis, withSelfAxisAll };
4764
+ export { ActionsMeta, AlertMeta, AutocompleteFieldMeta, AvatarMeta, BadgeMeta, BreadcrumbMeta, ButtonMeta, CanMeta, CardMeta, ChartMeta, CheckboxMeta, ColMeta, ColumnBoardMeta, DatePickerMeta, DateRangePickerMeta, DialogMeta, DiffViewMeta, DisclosureMeta, DividerMeta, EmptyStateMeta, EventCalendarMeta, FieldMeta, ForEachMeta, FormMeta, FragmentMeta, GridMeta, IconButtonMeta, IconMeta, ImageLightboxMeta, InlineEditMeta, InputMeta, JsonFieldMeta, KeyValueListMeta, LiveClockMeta, MapPreviewMeta, OrgChartMeta, PageHeadMeta, PaginationMeta, PeriodFilterMeta, PrintSheetMeta, ProgressBarMeta, RadioMeta, RecordSheetMeta, RemoteSearchResultsMeta, RowMeta, SDUI_CATEGORIES, SELF_AXIS_PROPS, SearchResultsMeta, SearchableMultiPickerMeta, SectionMeta, SecureScreenMeta, SegmentedControlMeta, SelectMeta, ShowMeta, SidebarNavMeta, SortHandleMeta, SortableListMeta, SpacerMeta, SpinnerMeta, StackedMeterMeta, StatCardMeta, StripMeta, SummaryTableMeta, SwitchMeta, TableMeta, TabsMeta, TagMeta, TagMultiSelectMeta, TextMeta, TextareaMeta, TimePickerMeta, TimelineMeta, ToastMeta, TooltipMeta, TreePickerMeta, TreeViewMeta, allComponentMeta, builtinComponentMeta, coreComponentMeta, dsComponentMeta, getComponentMeta, paletteGroups, richComponentMeta, slotNamesOf, widgetComponentMeta, withSelfAxis, withSelfAxisAll };
package/dist/rich.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React__default from 'react';
2
- export { b as DatePicker, D as DatePickerProps, c as DateRangePicker, a as DateRangePickerProps, d as DateRangeValue } from './DatePicker-CPD2cfmG.js';
2
+ export { b as DatePicker, D as DatePickerProps, c as DateRangePicker, a as DateRangePickerProps, d as DateRangeValue, e as TimePicker, T as TimePickerProps } from './DatePicker-D2EtpvkQ.js';
3
3
  import './layout-B1QrIBm6.js';
4
4
 
5
5
  /**
package/dist/rich.js CHANGED
@@ -1,6 +1,7 @@
1
- import { useSduiAssetResolver } from './chunk-WGRB5UL4.js';
2
- import { HoistedStyle } from './chunk-IY7SMV6V.js';
3
- export { DatePicker, DateRangePicker } from './chunk-IY7SMV6V.js';
1
+ import { useSduiAssetResolver } from './chunk-HPZTFZZN.js';
2
+ export { TimePicker } from './chunk-HPZTFZZN.js';
3
+ import { HoistedStyle } from './chunk-XKLUCUVA.js';
4
+ export { DatePicker, DateRangePicker } from './chunk-XKLUCUVA.js';
4
5
  import { Spinner, EmptyState } from './chunk-WIDDHR7L.js';
5
6
  import './chunk-SAN4IX6N.js';
6
7
  import { useRef, useCallback, useMemo, useState, useEffect, useLayoutEffect } from 'react';
@@ -1,5 +1,5 @@
1
- export { AutocompleteField, toAutocompleteOptions } from '../chunk-YKROA4XK.js';
2
- import '../chunk-GUFIEWW2.js';
3
- import '../chunk-IY7SMV6V.js';
1
+ export { AutocompleteField, toAutocompleteOptions } from '../chunk-SRGXODY2.js';
2
+ import '../chunk-U7ZK7WYH.js';
3
+ import '../chunk-XKLUCUVA.js';
4
4
  import '../chunk-WIDDHR7L.js';
5
5
  import '../chunk-SAN4IX6N.js';
@@ -1,4 +1,4 @@
1
- export { PeriodFilter } from '../chunk-44VLH3I2.js';
2
- import '../chunk-IY7SMV6V.js';
1
+ export { PeriodFilter } from '../chunk-PFUULIZ2.js';
2
+ import '../chunk-XKLUCUVA.js';
3
3
  import '../chunk-WIDDHR7L.js';
4
4
  import '../chunk-SAN4IX6N.js';