@revolist/ui 4.0.2-rc → 4.0.4-rc

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.
Files changed (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +345 -263
  3. package/_chunks/{calendar-CpaUK7w1.js → calendar-xpZ0v3xf.js} +39 -29
  4. package/_chunks/{chart-frame-BC99KjGa.js → chart-frame-Cmc7xU1i.js} +16 -13
  5. package/_chunks/{choice-chips-Cs4D-3nH.js → choice-chips-CHQTUdLs.js} +10 -10
  6. package/_chunks/clock-BOhPNlW3.js +4 -0
  7. package/_chunks/{color-palette-BBMFmUNA.js → color-palette-D8vyPfld.js} +1 -1
  8. package/_chunks/{color-picker-D90Jg-M8.js → color-picker-CudqPYZo.js} +10 -10
  9. package/_chunks/{component-YDcfoOLz.js → component-C_T2VN5u.js} +182 -178
  10. package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BMOOmqx5.js} +0 -4
  11. package/_chunks/control-AHKXD5Eu.js +93 -0
  12. package/_chunks/{control-tooltip-ztgmsG7H.js → control-tooltip-uscKfAnV.js} +15 -15
  13. package/_chunks/{controls-DIum-E66.js → controls-DsNi8V8I.js} +144 -129
  14. package/_chunks/{date-control-BJSzu79z.js → date-control-DrVFX13g.js} +1 -1
  15. package/_chunks/{date-time-BxPJusp9.js → date-time-qIhp5vaX.js} +143 -145
  16. package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
  17. package/_chunks/{dialog.parts-DBqo3Qwb.js → dialog.parts-CKGkC5zP.js} +20 -20
  18. package/_chunks/{duration-87U2EoMS.js → duration-CL68Em0o.js} +16 -15
  19. package/_chunks/{editor-popup-D3JdS8l3.js → editor-popup-WDdtVDNA.js} +5 -5
  20. package/_chunks/field-context-D57PnBbH.js +5 -0
  21. package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount--RTLIqE-.js} +1 -1
  22. package/_chunks/history-controls-B3u3INEK.js +27 -0
  23. package/_chunks/mount-DQ1cpppK.js +257 -0
  24. package/_chunks/native-control-C_yok8_-.js +605 -0
  25. package/_chunks/{number-input-BeIadZuL.js → number-input-BKwA5FnM.js} +2 -2
  26. package/_chunks/{picker-DpP7iQLA.js → picker-h1P5RUgp.js} +2 -2
  27. package/_chunks/popup-CT2uD3go.js +367 -0
  28. package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-DZgmaic0.js} +1 -1
  29. package/_chunks/render-m5eMMwFR.js +83 -0
  30. package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-CSlqAGHw.js} +1 -1
  31. package/_chunks/request-trail-DSlFix6i.js +618 -0
  32. package/_chunks/rich-text-CH7gIqOS.js +636 -0
  33. package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
  34. package/_form.scss +1 -1
  35. package/ai/_chat.scss +195 -0
  36. package/ai/_style.scss +105 -34
  37. package/ai/chat.d.ts +63 -0
  38. package/ai/components.d.ts +19 -3
  39. package/ai/index.d.ts +2 -0
  40. package/ai/index.js +3 -3
  41. package/ai/mount.d.ts +30 -1
  42. package/ai/prompt-history.d.ts +13 -0
  43. package/ai/transcript.d.ts +25 -0
  44. package/ai/translations.d.ts +1 -1
  45. package/angular/angular.js +0 -3
  46. package/assignee/index.js +34 -35
  47. package/buttons/delete-button.d.ts +2 -1
  48. package/buttons/delete-button.js +1 -1
  49. package/buttons/remove-button.js +1 -1
  50. package/buttons/svg-button.d.ts +1 -0
  51. package/buttons/svg-button.js +5 -5
  52. package/calendar/_calendar.scss +7 -2
  53. package/calendar/calendar.js +1 -1
  54. package/calendar/index.js +2 -2
  55. package/choice-chips/index.js +1 -1
  56. package/color-palette/color-palette.js +1 -1
  57. package/color-palette/color-picker.js +2 -2
  58. package/component-catalog.d.ts +16 -5
  59. package/control-attributes.js +7 -7
  60. package/controls.d.ts +8 -6
  61. package/controls.js +3 -3
  62. package/core/editor-popup.js +1 -1
  63. package/date-time/index.js +1 -1
  64. package/date-time/style.scss +4 -4
  65. package/dialog/dialog.dom.js +8 -8
  66. package/dialog/dialog.parts.js +1 -1
  67. package/distribution-chart/area-chart.js +1 -1
  68. package/distribution-chart/bar-chart.d.ts +5 -2
  69. package/distribution-chart/bar-chart.js +7 -3
  70. package/distribution-chart/chart-frame.d.ts +2 -1
  71. package/distribution-chart/line-chart.js +1 -1
  72. package/dropdown/content.d.ts +2 -1
  73. package/dropdown/content.js +1 -142
  74. package/dropdown/control.d.ts +14 -0
  75. package/dropdown/control.js +1 -0
  76. package/dropdown/control.view.d.ts +6 -0
  77. package/dropdown/dropdown.types.d.ts +4 -0
  78. package/dropdown/editor-dropdown.style.scss +37 -9
  79. package/dropdown/index.d.ts +1 -1
  80. package/dropdown/index.js +3 -4
  81. package/dropdown/lookup-field.js +1 -1
  82. package/dropdown/popup.js +1 -141
  83. package/duration/index.js +1 -1
  84. package/duration/style.scss +1 -1
  85. package/editor-actions.js +1 -1
  86. package/field-configurator.js +6 -6
  87. package/fieldset.d.ts +3 -0
  88. package/filter/filters/slider/single.js +1 -1
  89. package/filter-badge.js +1 -1
  90. package/filter-controls.js +7 -7
  91. package/form-controls/field-context.d.ts +5 -0
  92. package/form-controls/index.js +7 -12
  93. package/form-controls/index.view.d.ts +2 -4
  94. package/form-controls/presentation.js +51 -43
  95. package/formatting/index.js +25 -21
  96. package/framework.js +215 -207
  97. package/history-controls.d.ts +14 -0
  98. package/history-controls.js +1 -0
  99. package/masked-input/index.js +1 -1
  100. package/native-control.d.ts +6 -4
  101. package/native-control.js +3 -26
  102. package/native-styles.css +1 -1
  103. package/native.js +31 -30
  104. package/number-input/index.js +1 -1
  105. package/package.json +53 -14
  106. package/pagination.d.ts +3 -0
  107. package/pagination.js +43 -33
  108. package/pdf-viewer/index.js +1 -1
  109. package/pdf-viewer/style.scss +3 -4
  110. package/preact.d.ts +2 -0
  111. package/preact.js +62 -62
  112. package/rating-choice.js +1 -1
  113. package/react-control.d.ts +0 -1
  114. package/react-control.js +2 -2
  115. package/react.d.ts +13 -3
  116. package/react.js +71 -88
  117. package/reorder-list.js +1 -1
  118. package/resource-picker/resource-picker-popup.js +1 -1
  119. package/resource-picker/resource-picker.js +4 -4
  120. package/resource-picker/resource-picker.scss +6 -3
  121. package/rich-text/engine.d.ts +16 -19
  122. package/rich-text/index.d.ts +7 -7
  123. package/rich-text/index.js +1 -1
  124. package/rich-text/model.d.ts +4 -3
  125. package/rich-text/render-model.d.ts +4 -5
  126. package/rich-text/style.scss +3 -12
  127. package/rich-text/toolbar.d.ts +6 -6
  128. package/rich-text/translations.d.ts +3 -15
  129. package/select.d.ts +20 -0
  130. package/select.js +1 -0
  131. package/status-feedback/exit-snapshot.js +4 -4
  132. package/status-feedback/index.js +2 -2
  133. package/status-feedback/popover.js +10 -10
  134. package/status-feedback/render.js +3 -44
  135. package/status-feedback/status-feedback.scss +7 -0
  136. package/status-feedback/types.d.ts +4 -0
  137. package/status-feedback/use-auto-dismiss.d.ts +3 -0
  138. package/styles/_compositions.scss +3 -1
  139. package/styles/_control.scss +12 -4
  140. package/styles/_primitives.scss +9 -8
  141. package/styles.css +1 -1
  142. package/surfaces.js +45 -45
  143. package/svelte/UiComponent.server.js +1 -48
  144. package/svelte/UiComponent.svelte +0 -21
  145. package/svelte.js +33 -68
  146. package/time-grid.js +1 -1
  147. package/timeline-track/component.d.ts +5 -1
  148. package/timeline-track/index.js +71 -54
  149. package/timeline-track/model.d.ts +9 -0
  150. package/timeline-track/model.js +10 -1
  151. package/ui.css +1 -1
  152. package/vue.d.ts +24 -5
  153. package/vue.js +140 -164
  154. package/_chunks/compat.module-DDB2pm9O.js +0 -229
  155. package/_chunks/dropdown-voWqmwAe.js +0 -357
  156. package/_chunks/mount-DZe_6VtR.js +0 -90
  157. package/_chunks/request-trail-IdNiFvKH.js +0 -347
  158. package/_chunks/rich-text-BzI1DyfF.js +0 -477
  159. package/react-native-select.d.ts +0 -6
  160. package/rich-text/syntax.d.ts +0 -2
  161. package/vue-native-select.d.ts +0 -9
@@ -1,6 +1,6 @@
1
1
  import { calculateAnchoredPopoverPosition as e } from "../core/anchored-popover.js";
2
- import { hideTopLayerPopup as t, showTopLayerPopup as n } from "../core/top-layer-popup.js";
3
- import { inheritUiMotion as r } from "../core/motion.js";
2
+ import { inheritUiMotion as t } from "../core/motion.js";
3
+ import { hideTopLayerPopup as n, showTopLayerPopup as r } from "../core/top-layer-popup.js";
4
4
  import { statusFeedbackSize as i } from "./placement.js";
5
5
  import { animateStatusFeedback as a } from "./motion.js";
6
6
  import { statusFeedbackExit as o } from "./exit-snapshot.js";
@@ -46,34 +46,34 @@ var s = 0, c = class {
46
46
  })));
47
47
  };
48
48
  hide(e = !1) {
49
- (!e || this.mode) && (this.removeExit?.(), this.removeExit = void 0), e && this.panel?.isConnected && this.mode && (this.removeExit = o(this.panel)), this.animation?.cancel(), this.animation = void 0, this.releaseMotion?.(), this.releaseMotion = void 0, this.panel && this.mode && t(this.panel, this.mode), this.mode = void 0, this.stopWatching();
49
+ (!e || this.mode) && (this.removeExit?.(), this.removeExit = void 0), e && this.panel?.isConnected && this.mode && (this.removeExit = o(this.panel)), this.animation?.cancel(), this.animation = void 0, this.releaseMotion?.(), this.releaseMotion = void 0, this.panel && this.mode && n(this.panel, this.mode), this.mode = void 0, this.stopWatching();
50
50
  }
51
51
  destroy() {
52
52
  this.hide(), this.disposed = !0, this.panel = null, this.anchor = null;
53
53
  }
54
54
  position() {
55
- let t = this.panel, o = this.anchor, s = this.window;
56
- if (!t?.isConnected || !o?.isConnected || !s || this.disposed) return;
55
+ let n = this.panel, o = this.anchor, s = this.window;
56
+ if (!n?.isConnected || !o?.isConnected || !s || this.disposed) return;
57
57
  let c = this.options.boundary?.getBoundingClientRect(), l = i({
58
58
  width: s.innerWidth,
59
59
  height: s.innerHeight
60
60
  }, c, this.collapsed, this.options), u = l.width;
61
- t.style.width = `${u}px`, t.style.maxHeight = `${l.maxHeight}px`, this.releaseMotion ??= r(o, t);
61
+ n.style.width = `${u}px`, n.style.maxHeight = `${l.maxHeight}px`, this.releaseMotion ??= t(o, n);
62
62
  let d = !this.mode;
63
- d && (this.removeExit?.(), this.removeExit = void 0, this.mode = n(t));
63
+ d && (this.removeExit?.(), this.removeExit = void 0, this.mode = r(n));
64
64
  let f = o.getBoundingClientRect(), p = e({
65
65
  left: f.right - u,
66
66
  right: f.right,
67
67
  top: f.bottom,
68
68
  bottom: f.bottom
69
69
  }, {
70
- width: t.offsetWidth,
71
- height: t.offsetHeight
70
+ width: n.offsetWidth,
71
+ height: n.offsetHeight
72
72
  }, {
73
73
  width: s.innerWidth,
74
74
  height: s.innerHeight
75
75
  }, 0);
76
- t.style.left = `${p.left}px`, t.style.top = `${p.top}px`, d && (this.animation?.cancel(), this.animation = a(t, [{ opacity: 0 }, { opacity: 1 }], "rv-status-enter"));
76
+ n.style.left = `${p.left}px`, n.style.top = `${p.top}px`, d && (this.animation?.cancel(), this.animation = a(n, [{ opacity: 0 }, { opacity: 1 }], "rv-status-enter"));
77
77
  }
78
78
  stopWatching() {
79
79
  this.frame !== void 0 && this.window?.cancelAnimationFrame(this.frame), this.frame = void 0, this.observer?.disconnect(), this.observer = void 0, this.window?.removeEventListener("resize", this.refresh), this.window?.removeEventListener("scroll", this.refresh, !0), this.window = null;
@@ -1,44 +1,3 @@
1
- import { c as e } from "../_chunks/preact.module-BBM36DnO.js";
2
- import { renderHeader as t } from "./header.js";
3
- import { renderItem as n } from "./item.js";
4
- import { renderStatusBadge as r } from "./badge.js";
5
- //#region src/status-feedback/render.ts
6
- function i(e, r) {
7
- let { title: i, items: a, ariaLabel: o, className: s, popover: c, onCollapsedChange: l } = r;
8
- if (!a.length) return c?.hide(!0), null;
9
- let u = c?.collapsed ?? r.collapsed ?? !1, d = !!(c || l), f = (e, t) => {
10
- if (e && !c) {
11
- let e = t.currentTarget.closest(".rv-status-feedback"), n = e?.ownerDocument.activeElement;
12
- n && e?.contains(n) && e.querySelector(".rv-status-feedback__toggle")?.focus({ preventScroll: !0 });
13
- }
14
- c?.setCollapsed(e), l?.(e);
15
- };
16
- return c?.refresh(), e("section", {
17
- onKeyDown: (e) => {
18
- e.key === "Escape" && d && !u && (e.preventDefault(), e.stopPropagation(), f(!0, e));
19
- },
20
- ref: c?.panelRef,
21
- id: c?.id,
22
- class: [
23
- "rv-status-feedback",
24
- s,
25
- r.compact ? "rv-status-feedback--compact" : "",
26
- c ? "rv-status-feedback--popover" : "",
27
- u ? "rv-status-feedback--collapsed" : ""
28
- ].filter(Boolean).join(" "),
29
- "aria-label": o ?? i,
30
- "data-collapsed": String(u)
31
- }, [t(e, r, u, d, f), e("div", {
32
- id: c ? `${c.id}-items` : void 0,
33
- class: "rv-status-feedback__items",
34
- hidden: u
35
- }, a.map((t) => n(e, t)))]);
36
- }
37
- function a(t) {
38
- return i(e, t);
39
- }
40
- function o(t) {
41
- return r(e, t);
42
- }
43
- //#endregion
44
- export { o as StatusBadge, a as StatusFeedbackPanel, r as renderStatusBadge, i as renderStatusFeedbackPanel };
1
+ import { renderStatusBadge as e } from "./badge.js";
2
+ import { n as t, r as n, t as r } from "../_chunks/render-m5eMMwFR.js";
3
+ export { r as StatusBadge, t as StatusFeedbackPanel, e as renderStatusBadge, n as renderStatusFeedbackPanel };
@@ -1,4 +1,11 @@
1
1
  @use '../styles/motion';
2
+ @keyframes rv-status-item-exit {
3
+ to { opacity: 0; transform: translateY(4px); }
4
+ }
5
+ .rv-status-feedback__item[data-exiting='true'] {
6
+ animation: rv-status-item-exit 160ms ease-in both;
7
+ pointer-events: none;
8
+ }
2
9
  .rv-status-feedback,
3
10
  .rv-status-badge {
4
11
  --rv-status-warning: var(--rv-ui-warning);
@@ -29,6 +29,10 @@ export interface StatusFeedbackLocaleText {
29
29
  readonly formatCount: (count: number) => string;
30
30
  }
31
31
  export interface StatusFeedbackPanelProps {
32
+ /** Component adapters only: dismiss settled neutral/success items after this delay. Disabled by default. */
33
+ readonly autoDismissMs?: number;
34
+ /** The owner removes the item after its exit animation. */
35
+ readonly onDismissItem?: (id: string) => void;
32
36
  readonly compact?: boolean;
33
37
  readonly onClose?: () => void;
34
38
  readonly closeLabel?: string;
@@ -0,0 +1,3 @@
1
+ import { StatusFeedbackItem } from './types';
2
+ /** Timers follow individual items; the consumer remains the owner of removal. */
3
+ export declare function useAutoDismiss(items: readonly StatusFeedbackItem[], duration?: number, onDismiss?: (id: string) => void): StatusFeedbackItem[];
@@ -2,6 +2,7 @@
2
2
  @use './disclosure';
3
3
  @use './alert';
4
4
  @use './loading';
5
+ @use './control';
5
6
 
6
7
  .rv-example-card {
7
8
  box-sizing: border-box;
@@ -52,7 +53,8 @@
52
53
 
53
54
  .rv-control { color-scheme: var(--rv-ui-color-scheme, normal); }
54
55
  .rv-combobox .dropdown-trigger, .rv-multi-select .dropdown-trigger {
55
- min-height: 38px; padding: 8px 24px 8px 10px;
56
+ @include control.action-size;
57
+ padding-inline-end: 24px;
56
58
  border: 1px solid var(--rv-ui-border); border-radius: 8px;
57
59
  background: var(--rv-ui-surface-sunken); color: var(--rv-ui-text);
58
60
  }
@@ -1,18 +1,26 @@
1
1
  @use './motion';
2
+ // Standalone actions and dropdowns share dimensions and typography across adapters.
3
+ @mixin action-size {
4
+ box-sizing: border-box;
5
+ min-height: var(--rv-control-height, 32px);
6
+ padding: var(--rv-control-padding, 6px 12px);
7
+ font-family: inherit;
8
+ font-size: var(--rv-control-font-size, 0.875rem);
9
+ line-height: 1;
10
+ }
11
+
2
12
  // One native field presentation, also available to legacy consumer selectors.
3
13
  @mixin field {
4
14
  appearance: none;
5
15
  box-sizing: border-box;
6
16
  width: 100%;
7
17
  min-width: 0;
8
- min-height: var(--rv-control-height, 38px);
9
- padding: var(--rv-control-padding, 8px 10px);
18
+ @include action-size;
10
19
  border: 1px solid var(--rv-control-border, var(--rv-ui-border));
11
20
  border-radius: var(--rv-control-radius, 8px);
12
21
  background-color: var(--rv-control-bg, var(--rv-ui-surface-sunken));
13
22
  color: var(--rv-control-color, inherit);
14
- font: inherit;
15
- line-height: 1.25;
23
+
16
24
  color-scheme: var(--rv-ui-color-scheme, normal);
17
25
  transition:
18
26
  border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
@@ -1,5 +1,6 @@
1
1
  @use './motion';
2
2
  @use './loading';
3
+ @use './control';
3
4
  %rv-btn-base {
4
5
  position: relative;
5
6
  display: inline-flex;
@@ -7,13 +8,9 @@
7
8
  justify-content: center;
8
9
  gap: 4px;
9
10
  border-radius: var(--rv-ui-radius);
10
- min-height: 32px;
11
- padding: 6px 12px;
11
+ @include control.action-size;
12
12
  border: 1px solid transparent;
13
- font-family: inherit;
14
- font-size: 0.875rem;
15
13
  font-weight: var(--rv-ui-button-font-weight, 500);
16
- line-height: 1;
17
14
  cursor: pointer;
18
15
  user-select: none;
19
16
  box-shadow: none;
@@ -614,8 +611,8 @@ label.rv-switch-label {
614
611
  .rv-search-input > input:is([type='search'], [type='text']) {
615
612
  box-sizing: border-box;
616
613
  width: 100%;
617
- height: var(--rv-search-input-height, 32px);
618
- min-height: var(--rv-search-input-height, 32px);
614
+ height: var(--rv-search-input-height, var(--rv-control-height, 32px));
615
+ min-height: var(--rv-search-input-height, var(--rv-control-height, 32px));
619
616
  appearance: none;
620
617
  background: var(--rv-search-input-bg, var(--rv-ah-bg-input, var(--rv-ui-surface-sunken)));
621
618
  border: 1px solid var(--rv-search-input-border, var(--rv-ah-border, var(--rv-ui-border)));
@@ -625,7 +622,7 @@ label.rv-switch-label {
625
622
  color: var(--rv-search-input-color, var(--rv-ah-text, var(--rv-ui-text)));
626
623
  outline: none;
627
624
  font: inherit;
628
- font-size: 12px;
625
+ font-size: var(--rv-control-font-size, 0.875rem);
629
626
  transition:
630
627
  border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
631
628
  background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
@@ -961,3 +958,7 @@ button.rv-choice-chip-info:focus-visible,
961
958
  border-block-start-color: currentColor;
962
959
  }
963
960
  .rv-btn-busy.rv-btn-icon > :not(.rv-button-spinner) { display: none; }
961
+
962
+ // Applies uniformly to action variants, icon controls and navigation buttons.
963
+ .rv-btn-rounded.rv-btn-rounded { border-radius: 9999px; }
964
+ .rv-btn-rounded[aria-disabled='true'] { opacity: .5; pointer-events: none; }