@synopackageland/ui 0.20.3 → 0.20.5

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 (182) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSES/THIRD_PARTY.md +2 -32
  3. package/LICENSES/ux-foundation.md +83 -0
  4. package/LICENSES/ux-grid-baserow.md +35 -0
  5. package/LICENSES/ux-grid-teable.md +48 -0
  6. package/README.md +3 -0
  7. package/dist/components/app/app-layout/AppLayout.vue.d.ts +52 -5
  8. package/dist/components/app/app-layout/pageTitle.d.ts +24 -0
  9. package/dist/components/app/app-root/AppRoot.vue.d.ts +9 -0
  10. package/dist/components/app/app-tab-bar/AppTabBar.vue.d.ts +1 -1
  11. package/dist/components/app/aside-panel/AsidePanel.vue.d.ts +69 -0
  12. package/dist/components/app/aside-panel/asidePreference.d.ts +28 -0
  13. package/dist/components/app/section-tabs/SectionTabs.vue.d.ts +22 -4
  14. package/dist/components/composite/about-dialog/AboutDialog.vue.d.ts +1 -1
  15. package/dist/components/composite/adaptive-panel/AdaptivePanel.vue.d.ts +61 -0
  16. package/dist/components/composite/connection-topology/ConnectionTopology.vue.d.ts +1 -1
  17. package/dist/components/composite/data-grid/DataGrid.vue.d.ts +19 -1
  18. package/dist/components/composite/data-grid/labels.d.ts +15 -0
  19. package/dist/components/composite/data-grid/listLayout.d.ts +26 -0
  20. package/dist/components/composite/data-table/DataTable.vue.d.ts +33 -7
  21. package/dist/components/composite/file-picker/FilePicker.vue.d.ts +2 -2
  22. package/dist/components/composite/form/FormGroup.vue.d.ts +1 -1
  23. package/dist/components/composite/form/context.d.ts +13 -0
  24. package/dist/components/composite/form-actions/FormActions.vue.d.ts +6 -2
  25. package/dist/components/composite/mention-list/MentionList.vue.d.ts +2 -2
  26. package/dist/components/composite/overflow-toolbar/OverflowToolbar.vue.d.ts +2 -2
  27. package/dist/components/composite/record-panel/RecordPanel.vue.d.ts +91 -0
  28. package/dist/components/composite/record-panel/recordPanelWidth.d.ts +54 -0
  29. package/dist/components/composite/settings-section/SettingsSection.vue.d.ts +1 -1
  30. package/dist/components/composite/summary-card/SummaryCard.vue.d.ts +1 -1
  31. package/dist/components/composite/tag-editor/TagEditor.vue.d.ts +4 -4
  32. package/dist/components/composite/tree-view/TreeView.vue.d.ts +4 -4
  33. package/dist/components/composite/wizard/Wizard.vue.d.ts +2 -2
  34. package/dist/components/composite/wizard/WizardDialog.vue.d.ts +4 -4
  35. package/dist/components/containers/card/Card.vue.d.ts +1 -1
  36. package/dist/components/containers/card/CardField.vue.d.ts +26 -0
  37. package/dist/components/containers/card-grid/CardCover.vue.d.ts +16 -0
  38. package/dist/components/containers/card-grid/CardGrid.vue.d.ts +1 -1
  39. package/dist/components/containers/card-grid/VirtualCardGrid.vue.d.ts +71 -0
  40. package/dist/components/containers/expandable-item/ExpandableItem.vue.d.ts +1 -1
  41. package/dist/components/containers/fieldset/Fieldset.vue.d.ts +1 -1
  42. package/dist/components/containers/list-detail/ListDetail.vue.d.ts +6 -4
  43. package/dist/components/containers/split-pane/SplitPane.vue.d.ts +1 -1
  44. package/dist/components/feedback/notification/Notification.vue.d.ts +1 -1
  45. package/dist/components/feedback/notification/NotificationProvider.vue.d.ts +1 -1
  46. package/dist/components/feedback/validation-popup/ValidationPopup.vue.d.ts +1 -1
  47. package/dist/components/primitives/breadcrumb/Breadcrumb.vue.d.ts +2 -2
  48. package/dist/components/primitives/color-picker/ColorPicker.vue.d.ts +4 -4
  49. package/dist/components/primitives/combobox/Combobox.vue.d.ts +4 -4
  50. package/dist/components/primitives/context-menu/ContextMenu.vue.d.ts +5 -2
  51. package/dist/components/primitives/context-menu/ContextMenuItems.vue.d.ts +4 -5
  52. package/dist/components/primitives/dialog/Dialog.vue.d.ts +16 -8
  53. package/dist/components/primitives/dropdown-menu/DropdownMenu.vue.d.ts +7 -3
  54. package/dist/components/primitives/dropdown-menu/DropdownMenuItems.vue.d.ts +6 -3
  55. package/dist/components/primitives/dropdown-menu/DropdownMenuSheet.vue.d.ts +28 -0
  56. package/dist/components/primitives/input/Input.vue.d.ts +8 -1
  57. package/dist/components/primitives/input/Textarea.vue.d.ts +1 -1
  58. package/dist/components/primitives/input-steppers/InputSteppers.vue.d.ts +1 -1
  59. package/dist/components/primitives/motion/PushTransition.vue.d.ts +38 -0
  60. package/dist/components/primitives/multiple-select/MultipleSelect.vue.d.ts +4 -4
  61. package/dist/components/primitives/pagination/Pagination.vue.d.ts +22 -9
  62. package/dist/components/primitives/pagination/PaginationSheet.vue.d.ts +27 -0
  63. package/dist/components/primitives/pagination/labels.d.ts +6 -0
  64. package/dist/components/primitives/popover/Popover.vue.d.ts +11 -3
  65. package/dist/components/primitives/popover/floating.d.ts +27 -0
  66. package/dist/components/primitives/popover/overlay.d.ts +36 -0
  67. package/dist/components/primitives/segment-control/SegmentControl.vue.d.ts +4 -1
  68. package/dist/components/primitives/segment-control/context.d.ts +3 -0
  69. package/dist/components/primitives/select/Select.vue.d.ts +4 -0
  70. package/dist/components/primitives/select/internal/ComboboxField.vue.d.ts +6 -5
  71. package/dist/components/primitives/select/internal/SelectSheet.vue.d.ts +42 -0
  72. package/dist/components/primitives/select/internal/types.d.ts +2 -0
  73. package/dist/components/primitives/sheet/BottomSheet.vue.d.ts +69 -0
  74. package/dist/components/primitives/sheet/Sheet.vue.d.ts +13 -5
  75. package/dist/components/primitives/sheet/phone.d.ts +7 -0
  76. package/dist/components/primitives/skeleton/SectionSkeleton.vue.d.ts +25 -4
  77. package/dist/components/primitives/skeleton/Skeleton.vue.d.ts +3 -0
  78. package/dist/components/primitives/superbox-select/SuperboxSelect.vue.d.ts +4 -4
  79. package/dist/components/primitives/tag/Tag.vue.d.ts +2 -2
  80. package/dist/components/primitives/toast/ToastProvider.vue.d.ts +0 -2
  81. package/dist/components/primitives/toast/toast.d.ts +21 -1
  82. package/dist/components/primitives/tooltip/Tooltip.vue.d.ts +8 -3
  83. package/dist/components/primitives/tooltip/tooltipStyle.d.ts +11 -1
  84. package/dist/components/rich-text-editor/RichTextEditor.vue.d.ts +1 -1
  85. package/dist/composables/backDismiss.d.ts +19 -0
  86. package/dist/composables/formControl.d.ts +18 -0
  87. package/dist/composables/phone.d.ts +8 -0
  88. package/dist/composables/phoneSurface.d.ts +35 -0
  89. package/dist/composables/softKeyboard.d.ts +26 -4
  90. package/dist/composables/visualViewport.d.ts +31 -0
  91. package/dist/dnd/autoScroll.d.ts +57 -0
  92. package/dist/dnd/dragKit.d.ts +111 -0
  93. package/dist/dnd/index.d.ts +4 -0
  94. package/dist/dnd/layout.d.ts +57 -0
  95. package/dist/dnd/vue.d.ts +16 -0
  96. package/dist/feedback/StatusSlot.vue.d.ts +24 -0
  97. package/dist/feedback/showAfter.d.ts +15 -0
  98. package/dist/feedback/stackMotion.d.ts +13 -0
  99. package/dist/feedback/timing.d.ts +23 -0
  100. package/dist/grid/cells/draw.d.ts +57 -0
  101. package/dist/grid/cells/images.d.ts +5 -0
  102. package/dist/grid/cells/index.d.ts +7 -0
  103. package/dist/grid/cells/number.d.ts +5 -0
  104. package/dist/grid/cells/registry.d.ts +56 -0
  105. package/dist/grid/cells/renderers.d.ts +8 -0
  106. package/dist/grid/cells/status.d.ts +6 -0
  107. package/dist/grid/cells/types.d.ts +200 -0
  108. package/dist/grid/cells/use.d.ts +7 -0
  109. package/dist/grid/clipboard/copy.d.ts +17 -0
  110. package/dist/grid/clipboard/index.d.ts +4 -0
  111. package/dist/grid/clipboard/proposal.d.ts +35 -0
  112. package/dist/grid/clipboard/tsv.d.ts +14 -0
  113. package/dist/grid/clipboard/write.d.ts +21 -0
  114. package/dist/grid/contracts.d.ts +200 -0
  115. package/dist/grid/edit/cell-status.d.ts +33 -0
  116. package/dist/grid/edit/edit-session.d.ts +97 -0
  117. package/dist/grid/edit/use-grid-edit.d.ts +48 -0
  118. package/dist/grid/focus/editor-style.d.ts +67 -0
  119. package/dist/grid/host/GridHost.vue.d.ts +137 -0
  120. package/dist/grid/host/controller.d.ts +219 -0
  121. package/dist/grid/host/dom.d.ts +10 -0
  122. package/dist/grid/index.d.ts +8 -0
  123. package/dist/grid/range/block.d.ts +30 -0
  124. package/dist/grid/range/fill.d.ts +27 -0
  125. package/dist/grid/range/index.d.ts +2 -0
  126. package/dist/grid/theme.d.ts +61 -0
  127. package/dist/grid-core/auto-scroll.d.ts +67 -0
  128. package/dist/grid-core/column-resize.d.ts +43 -0
  129. package/dist/grid-core/config.d.ts +39 -0
  130. package/dist/grid-core/coordinate.d.ts +64 -0
  131. package/dist/grid-core/drag.d.ts +46 -0
  132. package/dist/grid-core/freeze.d.ts +11 -0
  133. package/dist/grid-core/index.d.ts +17 -0
  134. package/dist/grid-core/keyboard.d.ts +34 -0
  135. package/dist/grid-core/keys.d.ts +38 -0
  136. package/dist/grid-core/lru.d.ts +10 -0
  137. package/dist/grid-core/range.d.ts +28 -0
  138. package/dist/grid-core/region.d.ts +73 -0
  139. package/dist/grid-core/renderer/base.d.ts +92 -0
  140. package/dist/grid-core/renderer/layout.d.ts +129 -0
  141. package/dist/grid-core/selection-controller.d.ts +62 -0
  142. package/dist/grid-core/selection.d.ts +35 -0
  143. package/dist/grid-core/theme.d.ts +81 -0
  144. package/dist/grid-core/types.d.ts +178 -0
  145. package/dist/grid.js +6272 -0
  146. package/dist/i18n/text.d.ts +17 -0
  147. package/dist/index.d.ts +39 -4
  148. package/dist/index.js +23037 -14390
  149. package/dist/interaction/editSession.d.ts +49 -0
  150. package/dist/interaction/focus.d.ts +28 -0
  151. package/dist/interaction/gesture.d.ts +49 -0
  152. package/dist/interaction/ime.d.ts +55 -0
  153. package/dist/interaction/index.d.ts +6 -0
  154. package/dist/interaction/outside.d.ts +40 -0
  155. package/dist/interaction/vue.d.ts +21 -0
  156. package/dist/json-ai-prompt.md +1 -1
  157. package/dist/json-preview/preview.js +16780 -11595
  158. package/dist/json.js +10 -10
  159. package/dist/lib/adaptiveLayout.d.ts +32 -2
  160. package/dist/lib/deviceViewport.d.ts +2 -1
  161. package/dist/lib/motion.d.ts +12 -0
  162. package/dist/reka-runtime.json +15 -12
  163. package/dist/rich-text.js +1 -1
  164. package/dist/theme.css +1 -1
  165. package/dist/themes/dsm7-embedded-reset.css +1 -1
  166. package/dist/themes/dsm7-embedded-theme.css +1 -1
  167. package/dist/themes/dsm7-embedded.css +1 -1
  168. package/dist/themes/dsm7.css +1 -1
  169. package/dist/virtual/cardHeight.d.ts +39 -0
  170. package/dist/virtual/galleryColumns.d.ts +11 -0
  171. package/dist/virtual/layoutMotion.d.ts +30 -0
  172. package/docs/adaptive-layout.md +148 -25
  173. package/docs/app-local-modal.md +1 -1
  174. package/docs/callout.md +22 -1
  175. package/docs/layout-rules.md +14 -0
  176. package/docs/list-detail.md +60 -0
  177. package/docs/mobile-native.md +502 -0
  178. package/docs/release-checks.md +28 -0
  179. package/docs/theme-hooks.md +28 -7
  180. package/docs/ux-foundation.md +133 -0
  181. package/docs/ux-grid.md +217 -0
  182. package/package.json +100 -2
package/dist/json.js CHANGED
@@ -2,7 +2,7 @@ import { z as t } from "zod";
2
2
  import { z as vt } from "zod";
3
3
  import { defineCatalog as F } from "@json-render/core";
4
4
  import { createStateStore as $t, defineCatalog as jt } from "@json-render/core";
5
- import { defineRegistry as M, useBoundProp as b, JSONUIProvider as W, Renderer as B } from "@json-render/vue";
5
+ import { defineRegistry as W, useBoundProp as b, JSONUIProvider as B, Renderer as M } from "@json-render/vue";
6
6
  import { ActionProvider as Ot, JSONUIProvider as At, Renderer as kt, StateProvider as Pt, ValidationProvider as Ct, VisibilityProvider as It, defineRegistry as Rt, useActions as Kt, useBoundProp as Lt, useStateStore as Dt } from "@json-render/vue";
7
7
  import { schema as G } from "@json-render/vue/schema";
8
8
  import { schema as Tt } from "@json-render/vue/schema";
@@ -369,7 +369,7 @@ const J = t.lazy(() => t.object({
369
369
  "Keep state in the spec and use $bindState/$bindItem for editable controls; do not invent JavaScript in props.",
370
370
  "Use host-declared actions for side effects. Never encode fetch, timers, filesystem operations, or business logic as UI expressions.",
371
371
  "If a domain view needs custom rendering or behavior (for example a treemap, terminal, rich download row, NAS path picker), use a host extension component instead of forcing it into generic components.",
372
- "AppShell adapts to its actual DSM window width: phone (<=600px), desktop window (601–1199px), and wide web/Portal (>=1200px). Never assume browser viewport width.",
372
+ 'AppShell adapts to its actual container width: phone (<=640px), desktop window (641px and wider), and, only with wideLayout "web", the full-page web layout from 960px (its sidebar starts as a 48px rail below 1200px). Never assume browser viewport width.',
373
373
  "For a phone-unfriendly custom view, use ResponsiveView slots: mobile alternative and default full view. Keep essential actions accessible on mobile.",
374
374
  "Use low-level Stack/Text only when a semantic component does not already express the layout."
375
375
  ], Le = '## Self-check workflow\n\nInstall `@synopackageland/ui` first. Without a local install, use\n`npx -y -p @synopackageland/ui syno-pkg-land-ui <command>` (pin the package version for reproducibility).\n\n1. List components with `npx --no syno-pkg-land-ui catalog`; read props with `npx --no syno-pkg-land-ui describe <Component>`.\n2. Write the spec as JSON: {"root", "elements", "state"}. Seed every state path you bind or read.\n3. Run `npx --no syno-pkg-land-ui validate ui.json --json` (add --actions, --functions, --state, --messages for host-provided names).\n Fix every error at its JSON Pointer `path` using its `hint`, then validate again until it passes.\n4. Run `npx --no syno-pkg-land-ui render ui.json --out shots` to screenshot phone, DSM window and wide widths and to\n report layout overflow; fix reported elements and repeat.\n5. Hand over the spec only when validate and render both exit 0.';
@@ -616,7 +616,7 @@ const Je = {
616
616
  ListItem: ({ props: e, slots: o }) => d(oe, e, o),
617
617
  InputGroup: ({ slots: e }) => d(te, null, e),
618
618
  Loading: ({ props: e }) => d(ee, { text: e.text })
619
- }, { registry: D } = M(A, {
619
+ }, { registry: D } = W(A, {
620
620
  components: Je
621
621
  }), ut = /* @__PURE__ */ H({
622
622
  __name: "SynoJsonRenderer",
@@ -634,7 +634,7 @@ const Je = {
634
634
  fallback: {}
635
635
  },
636
636
  setup(e) {
637
- return (o, n) => (X(), Y(j(W), {
637
+ return (o, n) => (X(), Y(j(B), {
638
638
  registry: j(D),
639
639
  store: e.store,
640
640
  "initial-state": e.state ?? e.spec?.state ?? {},
@@ -646,7 +646,7 @@ const Je = {
646
646
  "on-state-change": e.onStateChange
647
647
  }, {
648
648
  default: Q(() => [
649
- Z(j(B), {
649
+ Z(j(M), {
650
650
  spec: e.spec,
651
651
  registry: j(D),
652
652
  loading: e.loading,
@@ -692,7 +692,7 @@ function Fe(e) {
692
692
  if (e.code === "invalid_type") return `Expected ${e.expected}.`;
693
693
  }
694
694
  const v = (e, o) => `${e}: ${o.join(", ")}`;
695
- class Me {
695
+ class We {
696
696
  errors = [];
697
697
  warnings = [];
698
698
  error(o) {
@@ -703,7 +703,7 @@ class Me {
703
703
  }
704
704
  }
705
705
  function mt(e, o = {}) {
706
- const n = o.catalog ?? A, a = n.data.components, i = new Me();
706
+ const n = o.catalog ?? A, a = n.data.components, i = new We();
707
707
  if (!m(e))
708
708
  return i.error({ code: "invalid_spec", path: "", message: "A spec must be a JSON object.", hint: 'Return {"root": "<key>", "elements": {...}, "state": {...}}.' }), T(i);
709
709
  const s = m(e.elements) ? e.elements : void 0;
@@ -728,7 +728,7 @@ function mt(e, o = {}) {
728
728
  });
729
729
  continue;
730
730
  }
731
- We(i, p, h, a[h], f.props), Be(i, p, h, a[h], f, s);
731
+ Be(i, p, h, a[h], f.props), Me(i, p, h, a[h], f, s);
732
732
  }
733
733
  const c = o.messages && q(o.messages), l = {
734
734
  issues: i,
@@ -745,7 +745,7 @@ function mt(e, o = {}) {
745
745
  };
746
746
  return s && typeof e.root == "string" && Object.hasOwn(s, e.root) && Ge(l, e.root, s), T(i);
747
747
  }
748
- function We(e, o, n, a, i) {
748
+ function Be(e, o, n, a, i) {
749
749
  const s = (...l) => u("elements", o, "props", ...l);
750
750
  if (!m(i)) {
751
751
  e.error({ code: "invalid_props", path: s(), elementKey: o, message: '"props" must be an object.', hint: 'Use "props": {} when the component needs none.' });
@@ -793,7 +793,7 @@ function z(e, o) {
793
793
  });
794
794
  return n;
795
795
  }
796
- function Be(e, o, n, a, i, s) {
796
+ function Me(e, o, n, a, i, s) {
797
797
  const r = a.slots ?? [], { children: c } = i;
798
798
  if (c !== void 0 && !(Array.isArray(c) && c.every((l) => typeof l == "string")) ? e.error({ code: "invalid_children", path: u("elements", o, "children"), elementKey: o, message: '"children" must be an array of element keys.' }) : c?.length && !r.includes("default") && e.error({
799
799
  code: "children_not_allowed",
@@ -1,8 +1,10 @@
1
- import { ComputedRef, InjectionKey } from 'vue';
1
+ import { ComputedRef, InjectionKey, Ref } from 'vue';
2
2
  export type AppPresentation = 'mobile' | 'window' | 'web';
3
3
  /** Container widths, never global viewport breakpoints: DSM windows share a wide host viewport. */
4
4
  export declare const MOBILE_LAYOUT_MAX = 640;
5
- export declare const WEB_LAYOUT_MIN = 1200;
5
+ export declare const WEB_LAYOUT_MIN = 960;
6
+ /** Below this width a web layout starts with its sidebar as the rail, so a 1024 laptop keeps room for the page. */
7
+ export declare const WEB_RAIL_BELOW = 1200;
6
8
  /** How a wide container is presented: a maximized DSM window stays `window` unless the app is a Portal page. */
7
9
  export type WideLayout = 'window' | 'web';
8
10
  export declare function appPresentationForWidth(width: number, wide?: WideLayout): AppPresentation;
@@ -11,6 +13,34 @@ export declare const APP_PRESENTATION_KEY: InjectionKey<ComputedRef<AppPresentat
11
13
  export declare const WEB_SIDEBAR_DEFAULT = 248;
12
14
  export declare const WEB_SIDEBAR_MIN = 200;
13
15
  export declare const WEB_SIDEBAR_MAX = 360;
16
+ /** The collapsed sidebar and the collapsed aside are one rail width. */
17
+ export declare const WEB_RAIL_WIDTH = 48;
18
+ /** A web container this narrow shows the sidebar as the rail until the user opens it. */
19
+ export declare function webSidebarStartsAsRail(width: number): boolean;
20
+ /** The right side region (AppLayout's `aside` slot): open beside the page, the rail, or over the whole content area. */
21
+ export type AppAsideState = 'open' | 'collapsed' | 'expanded';
22
+ export declare const WEB_ASIDE_DEFAULT = 380;
23
+ export declare const WEB_ASIDE_MIN = 320;
24
+ export declare const WEB_ASIDE_MAX = 560;
25
+ /** An open aside that would leave the page narrower than this floats over the page instead of pushing it. */
26
+ export declare const ASIDE_MAIN_MIN = 480;
27
+ /** What AppLayout tells the content of its `aside` slot (an AsidePanel). */
28
+ export type AppAside = {
29
+ /** The state; setting it writes AppLayout's `v-model:aside`. */
30
+ state: Ref<AppAsideState>;
31
+ /** True while the open aside floats over the page instead of pushing it. */
32
+ overlay: ComputedRef<boolean>;
33
+ presentation: ComputedRef<AppPresentation>;
34
+ /** The region's target width as a CSS length (the rail, the open width, or the whole content area). */
35
+ regionWidth: ComputedRef<string>;
36
+ };
37
+ export declare const APP_ASIDE_KEY: InjectionKey<AppAside>;
38
+ /**
39
+ * The shared side-region motion: true while the sidebar or the aside changes
40
+ * width. Content that measures itself (a canvas grid, a chart, a column count)
41
+ * waits for false and then measures once, so it settles once.
42
+ */
43
+ export declare const APP_SIDE_MOTION_KEY: InjectionKey<Readonly<Ref<boolean>>>;
14
44
  /** True while the web sidebar shows icons only; AppSidebar keeps labels as accessible names. */
15
45
  export declare const APP_SIDEBAR_COLLAPSED_KEY: InjectionKey<ComputedRef<boolean>>;
16
46
  /** Where AppLayout puts its navigation: the left column (default) or a bar across the top. A phone always uses the drawer. */
@@ -10,6 +10,7 @@
10
10
  * change: a changed viewport is followed by one, once it applies. A
11
11
  * device-width viewport already on the page gets the resize too, since the
12
12
  * host's window loader may have set it just before the app mounted, after DSM
13
- * sized the window; it is left as it is.
13
+ * sized the window; it keeps its own keys and only gains the missing
14
+ * `viewport-fit` and `interactive-widget`.
14
15
  */
15
16
  export declare function ensureDeviceViewport(doc?: Document): () => void;
@@ -6,6 +6,18 @@ export declare const MOTION_OFF_SELECTOR = "[data-ui-motion=\"off\"]";
6
6
  * ancestor carries `data-ui-motion="off"`.
7
7
  */
8
8
  export declare function motionOff(el?: Element | null): boolean;
9
+ /** A duration token from the theme (dsm7.css), read by motionMs. */
10
+ export type MotionToken = '--ui-motion-fast' | '--ui-motion-normal' | '--ui-motion-slow' | '--ui-motion-panel' | '--ui-motion-exit' | '--ui-motion-stack' | '--ui-motion-flash' | '--ui-skeleton-pulse' | '--ui-motion-drag' | '--ui-motion-drag-settle';
11
+ /** A CSS time (`150ms`, `0.3s`) in milliseconds; null when it is not one. */
12
+ export declare function parseCssTime(value: string): number | null;
13
+ /**
14
+ * A motion token's duration in milliseconds as it resolves on `el` (the
15
+ * document root when none is given), so script times itself by the theme
16
+ * instead of repeating its numbers. 0 when motion is off for `el` (reduced
17
+ * motion or `data-ui-motion="off"`), when the token is not set, and outside
18
+ * a browser.
19
+ */
20
+ export declare function motionMs(token: MotionToken, el?: Element | null): number;
9
21
  /** The longest transition on `el` in milliseconds, delays included; 0 when none applies. */
10
22
  export declare function transitionMs(el: Element): number;
11
23
  export type InsertedKeysOptions = {
@@ -1,25 +1,28 @@
1
1
  {
2
2
  "name": "reka-ui",
3
- "version": "2.10.5",
3
+ "version": "2.11.0",
4
4
  "delivery": "bundled-patched-esm",
5
- "patchManifestSha256": "14f10159b60d48ac7a0686f58faf7a30e99898dc267b3c032cf2bdd6052dc52b",
6
- "bundleSha256": "54d74a42194738ca761416590a8e726632a8b0357cda21650d971ad8424d550b",
5
+ "patchManifestSha256": "9c5b9c9a162fa584b4695a683368a4484b3ac6e70177fd063b77aa618c051627",
6
+ "bundleSha256": "9d900b74cfd1b9a5fb8bbc76468104616674baa6afef795ce9afba4fe82c86c0",
7
7
  "sourceHashes": {
8
- "shared/useBodyScrollLock.js": "657592f283cb6fd25454abd284a0024af21936cb56e05b762ff0d22b6a979d32",
9
- "DismissableLayer/DismissableLayer.js": "da05ca544d9822a8e2b71057e78c0e1ef59423aa3893534338fb58e1ecbd1a8d",
10
- "FocusScope/FocusScope.js": "75ccaf31fe320bd40c6f7f4cf0abca6946a050f004bce562474d7b512ab3c207",
11
- "DismissableLayer/DismissableLayerBranch.js": "7b5f04cf3e7cfe3cc5bba5c5f7784c6f1865221aebd5f018f4c03159934275c2",
8
+ "shared/useBodyScrollLock.js": "287bfb604318c4202769e4b5191896eaf0e52a952e1de898967cbe09467fcfda",
9
+ "DismissableLayer/DismissableLayer.js": "3c8d248f0a32e01f89ca1f6202b1bb691bf5d0e4012a92535e161c35e69cdc32",
10
+ "FocusScope/FocusScope.js": "525b1858934ee694c69bc1e3b5f49bd26db874dd201a75577a3c3dd430ca5165",
11
+ "DismissableLayer/DismissableLayerBranch.js": "3ab187f3aa53b5167b017f4a6aafddfefaf3847dab405dad68ac2d55bbed30a1",
12
12
  "shared/useHideOthers.js": "8b0c559cdf4204c0c2b707a3695ee12b6ea29c27303a92b92356efd762275066",
13
13
  "shared/useFocusGuards.js": "979b2ac3f88c4b83eb9a3fcc22ceaab7b0961f8191a1f641d6e0bd55b9346fb0",
14
- "Dialog/DialogContentModal.js": "d79787901616b10f2ccd8e68994d3e1c12136b910b3238a6a0a4cf1c0c786e4b",
15
- "Dialog/DialogContentImpl.js": "e4da9716456748dab317c7088b5d4b4a2cdb43014bf0504e068fa2b68cba553a",
14
+ "Dialog/DialogContentModal.js": "da96e8ab6145c5e527e01ca7986b148fdc7782843e3764da65a8962604395014",
15
+ "Dialog/DialogContentImpl.js": "72ada0d788f27f2342a384b3cb98766c17a826a317c722f4aa2ead06dab8c799",
16
16
  "Popover/PopoverContentModal.js": "3308c342f243175e53dad15def2b3de14914e38b00843b9bf16611fc51a6ff4c",
17
17
  "Popover/PopoverContentNonModal.js": "f290762d49914c0ce3350b3030014414ca8367cb80b2fbe683a5965e574a3da7",
18
- "DropdownMenu/DropdownMenuContent.js": "6013eb47332427110b41728a12661ec2f6801c889ecc821903f609f69bd41c70",
19
- "Select/SelectContentImpl.js": "185b1f5b29f49986b735a01aa0d14e7b58bc1727ada7e7a697bb1d23220ad241",
18
+ "DropdownMenu/DropdownMenuContent.js": "3ca7a2e3278a2147274bb5678724f698e787784930a87a5a3bdf9e154cfe28b1",
19
+ "Select/SelectContentImpl.js": "aec5af933cec10d8653dcbb334412dca97663cdff8621730405bcae80a83918f",
20
20
  "Tooltip/TooltipRoot.js": "40eb3cd58d90e878066705cf1ebcc9411dc177b79182be6db1980e920264fd3f",
21
21
  "Tooltip/TooltipContentImpl.js": "e1cda07749e60477f5a71015d679045414dc2785e11f5d51ce69ea8b405e42ad",
22
22
  "Popper/PopperContent.js": "1e1894ba362a36ae9c89bd77a8d92ecb7fd7492b5c237859bb6486d7206d340c",
23
- "Menu/MenuSubContent.js": "856be5da2c50a5486f33772161013dc3eee3cf362473af5f8a4bbcc074daeba0"
23
+ "Menu/MenuSubContent.js": "268f7f44e4f4e50307a2303dedee17d270dfeaf893e787ee682f6248754004b6",
24
+ "shared/bodyPointerEvents.js": "806fb365e555b66721986bb3868c5bdfeb5a71dc2f9673896847126075027126",
25
+ "Drawer/DrawerContentImpl.js": "1667f2133672ccb0a33360568c31fcfbb7bbe07aa77414b40e896c88eca2312d",
26
+ "composables/useSwipeDismiss.js": "b8721b4f6444be46f9aa1542b0ad0f6025b7ccc7de98a6ae7f86e194d8166524"
24
27
  }
25
28
  }
package/dist/rich-text.js CHANGED
@@ -495,7 +495,7 @@ const Pa = ["data-variant", "data-over"], La = ["aria-label"], Aa = ["aria-label
495
495
  }
496
496
  const ve = q(), be = q(1 / 0);
497
497
  let he;
498
- const ge = 34, ie = M(() => [
498
+ const ge = h ? 46 : 34, ie = M(() => [
499
499
  ...re.value.map((e) => ({ key: e.key, label: e.label, icon: e.icon, action: e })),
500
500
  ...i.upload ? [{ key: "image", label: "Add image", icon: Qe, action: void 0 }] : [],
501
501
  { key: "mention", label: "Mention someone", icon: We, action: void 0 }