@orioncactuscorp/ui 1.7.0 → 1.9.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.
Files changed (44) hide show
  1. package/dist/components/Accordion/Accordion.css +1 -1
  2. package/dist/components/Alert/Alert.js +1 -1
  3. package/dist/components/Button/Button.css +1 -1
  4. package/dist/components/Checkbox/Checkbox.css +1 -1
  5. package/dist/components/Modal/Modal.css +1 -1
  6. package/dist/components/Modal/Modal.js +671 -517
  7. package/dist/components/Modal/bottomSheetGeometry.js +88 -0
  8. package/dist/components/Modal/modalScrollArbitration.js +8 -7
  9. package/dist/components/Modal/snapPoints.js +9 -8
  10. package/dist/components/Modal/useModalContentBlockTransition.js +64 -0
  11. package/dist/components/Modal/useModalDrag.js +917 -788
  12. package/dist/components/Radio/Radio.css +1 -1
  13. package/dist/components/ScrollArea/ScrollArea.css +1 -1
  14. package/dist/components/ScrollArea/ScrollArea.js +250 -223
  15. package/dist/components/ScrollArea/useScrollAreaGeometryStabilizer.js +36 -0
  16. package/dist/components/TextButton/TextButton.css +1 -1
  17. package/dist/components/TextButton/TextButton.module.scss.js +8 -6
  18. package/dist/components/internal/DisclosureIndicator.js +23 -23
  19. package/dist/styles.css +7 -7
  20. package/dist/ui/src/components/Modal/Modal.d.ts +2 -2
  21. package/dist/ui/src/components/Modal/Modal.d.ts.map +1 -1
  22. package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts +36 -0
  23. package/dist/ui/src/components/Modal/bottomSheetGeometry.d.ts.map +1 -0
  24. package/dist/ui/src/components/Modal/index.d.ts +1 -1
  25. package/dist/ui/src/components/Modal/index.d.ts.map +1 -1
  26. package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts +2 -1
  27. package/dist/ui/src/components/Modal/modalScrollArbitration.d.ts.map +1 -1
  28. package/dist/ui/src/components/Modal/snapPoints.d.ts +1 -0
  29. package/dist/ui/src/components/Modal/snapPoints.d.ts.map +1 -1
  30. package/dist/ui/src/components/Modal/types.d.ts +11 -1
  31. package/dist/ui/src/components/Modal/types.d.ts.map +1 -1
  32. package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts +5 -0
  33. package/dist/ui/src/components/Modal/useModalContentBlockTransition.d.ts.map +1 -0
  34. package/dist/ui/src/components/Modal/useModalDrag.d.ts +5 -1
  35. package/dist/ui/src/components/Modal/useModalDrag.d.ts.map +1 -1
  36. package/dist/ui/src/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  37. package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts +11 -0
  38. package/dist/ui/src/components/ScrollArea/useScrollAreaGeometryStabilizer.d.ts.map +1 -0
  39. package/dist/ui/src/index.d.ts +1 -1
  40. package/dist/ui/src/index.d.ts.map +1 -1
  41. package/package.json +2 -1
  42. package/src/scss/mixins/_element.scss +161 -14
  43. package/src/scss/mixins/_element.test.ts +94 -5
  44. package/src/scss/mixins/_icon.scss +27 -0
@@ -0,0 +1,36 @@
1
+ import { useRef as r, useCallback as F, useEffect as R } from "react";
2
+ const s = {
3
+ maxFrames: 90,
4
+ minFrames: 30,
5
+ stableFrames: 3
6
+ };
7
+ function A({
8
+ enabled: a,
9
+ getGeometrySignature: m,
10
+ updateGeometry: i
11
+ }) {
12
+ const e = r(null), t = r(0), n = r(0), c = r(""), u = r(0), o = F(() => {
13
+ e.current === null || typeof window > "u" || (window.cancelAnimationFrame(e.current), e.current = null);
14
+ }, []), d = F(() => {
15
+ if (!a || typeof window > "u" || (t.current = 0, n.current = 0, c.current = "", u.current = s.maxFrames, e.current !== null)) return;
16
+ const l = () => {
17
+ i();
18
+ const f = m();
19
+ n.current = f === c.current ? n.current + 1 : 0, c.current = f, t.current += 1, u.current -= 1;
20
+ const w = t.current >= s.minFrames && n.current >= s.stableFrames;
21
+ if (u.current > 0 && !w) {
22
+ e.current = window.requestAnimationFrame(l);
23
+ return;
24
+ }
25
+ e.current = null;
26
+ };
27
+ e.current = window.requestAnimationFrame(l);
28
+ }, [a, m, i]);
29
+ return R(() => o, [o]), {
30
+ cancelGeometryUpdate: o,
31
+ scheduleGeometryUpdate: d
32
+ };
33
+ }
34
+ export {
35
+ A as useScrollAreaGeometryStabilizer
36
+ };
@@ -1 +1 @@
1
- .oc-TextButton-module__textButton__71n5b{position:relative;display:inline-flex;align-items:center;justify-content:center;appearance:none;border:none;background-color:transparent;padding:0;cursor:pointer;text-decoration:none;color:inherit;will-change:transform;transition:transform calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor) * var(--oc-motion-pace-normal) * 1) var(--oc-motion-timing-feedback)}@media(prefers-reduced-motion:reduce){.oc-TextButton-module__textButton__71n5b{transition:none;transform:none}}.oc-TextButton-module__textButton__71n5b{-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;display:inline-flex;align-items:center;gap:.125em;color:var(--oc-text-button-color);transition:color calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor) * var(--oc-motion-pace-normal) * 1) var(--oc-motion-timing-feedback),transform calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor) * var(--oc-motion-pace-normal) * 1) var(--oc-motion-timing-feedback)}@media(prefers-reduced-motion:reduce){.oc-TextButton-module__textButton__71n5b{transition-property:color;transition-duration:calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor-reduced) * var(--oc-motion-pace-normal) * 1);transition-timing-function:var(--oc-motion-timing-feedback);transform:none}}.oc-TextButton-module__textButton__71n5b{--oc-text-button-color: inherit;--oc-interaction-color: currentcolor;--oc-interaction-scale: .95;--oc-interaction-time: .225s;--oc-interaction-inset-x: -.375em;--oc-interaction-inset-y: -.1em;--oc-interaction-radius: max(0px, .3125em * var(--oc-atomic-radius-factor))}.oc-TextButton-module__textButton__71n5b>[data-oc-part=icon]{display:inline-flex;align-items:center;justify-content:center;width:1.125em;height:1.125em}.oc-TextButton-module__textButton__71n5b>[data-oc-part=icon]>svg{width:100%;height:100%}.oc-TextButton-module__textButton__71n5b:focus-visible:not(:disabled,[aria-disabled=true])>[data-oc-component=interaction]{opacity:var(--oc-interaction-opacity-focus);transform:scale(1)}@media(hover:hover){.oc-TextButton-module__textButton__71n5b:hover:not(:disabled,[aria-disabled=true])>[data-oc-component=interaction]{opacity:var(--oc-interaction-opacity-hover);transform:scale(1)}}.oc-TextButton-module__textButton__71n5b:active:not(:disabled,[aria-disabled=true]){transform:scale(max(0,1 + (.95 - 1) * var(--oc-motion-scale-factor-feedback)))}.oc-TextButton-module__textButton__71n5b:active:not(:disabled,[aria-disabled=true])>[data-oc-component=interaction]{opacity:var(--oc-interaction-opacity-active);transform:scale(1)}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__primary__dlRiO){--oc-text-button-color: var(--oc-color-theme-primary-normal)}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__assistive__wUKa-){--oc-text-button-color: var(--oc-color-theme-label-alternative)}.oc-TextButton-module__textButton__71n5b:disabled,.oc-TextButton-module__textButton__71n5b[aria-disabled=true]{--oc-text-button-color: var(--oc-color-theme-label-disable);cursor:not-allowed}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__medium__1VOra){font-size:calc(var(--oc-typo-size-body1) * var(--oc-typo-size-factor, 1));line-height:calc(var(--oc-typo-height-body1) * var(--oc-typo-size-factor, 1));letter-spacing:var(--oc-typo-spacing-body1);font-weight:var(--oc-typo-weight-body1-bold)}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__small__zxHdc){font-size:calc(var(--oc-typo-size-label1) * var(--oc-typo-size-factor, 1));line-height:calc(var(--oc-typo-height-label1) * var(--oc-typo-size-factor, 1));letter-spacing:var(--oc-typo-spacing-label1);font-weight:var(--oc-typo-weight-label1-bold)}@media(prefers-reduced-motion:reduce){.oc-TextButton-module__textButton__71n5b:active:not(:disabled,[aria-disabled=true]){transform:none}}
1
+ .oc-TextButton-module__textButton__71n5b{position:relative;display:inline-flex;align-items:center;justify-content:center;appearance:none;border:none;background-color:transparent;padding:0;cursor:pointer;text-decoration:none;color:inherit;will-change:transform;transition:transform calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor) * var(--oc-motion-pace-normal) * 1) var(--oc-motion-timing-feedback)}@media(prefers-reduced-motion:reduce){.oc-TextButton-module__textButton__71n5b{transition:none;transform:none}}.oc-TextButton-module__textButton__71n5b{-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;display:inline-flex;align-items:center;gap:.125em;padding-block:var(--oc-text-button-padding-y);padding-inline:var(--oc-text-button-padding-x);color:var(--oc-text-button-color);transition:color calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor) * var(--oc-motion-pace-normal) * 1) var(--oc-motion-timing-feedback),transform calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor) * var(--oc-motion-pace-normal) * 1) var(--oc-motion-timing-feedback)}@media(prefers-reduced-motion:reduce){.oc-TextButton-module__textButton__71n5b{transition-property:color;transition-duration:calc(var(--oc-motion-duration-feedback) * var(--oc-motion-duration-factor-reduced) * var(--oc-motion-pace-normal) * 1);transition-timing-function:var(--oc-motion-timing-feedback);transform:none}}.oc-TextButton-module__textButton__71n5b{--oc-text-button-color: inherit;--oc-text-button-padding-x: 0px;--oc-text-button-padding-y: 0px;--oc-interaction-color: currentcolor;--oc-interaction-scale: .95;--oc-interaction-time: .225s;--oc-interaction-inset-x: -.375em;--oc-interaction-inset-y: -.1em;--oc-interaction-radius: max(0px, .3125em * var(--oc-atomic-radius-factor))}.oc-TextButton-module__textButton__71n5b>[data-oc-part=icon]{display:inline-flex;align-items:center;justify-content:center}.oc-TextButton-module__textButton__71n5b>[data-oc-part=icon]>[data-oc-component=svg-icon]{inline-size:auto;block-size:var(--oc-text-button-icon-size, calc(1.5em - var(--oc-text-button-icon-padding-block, .1875em) * 2))}@supports (block-size: 1lh){.oc-TextButton-module__textButton__71n5b>[data-oc-part=icon]>[data-oc-component=svg-icon]{block-size:var(--oc-text-button-icon-size, calc(1lh - var(--oc-text-button-icon-padding-block, .1875em) * 2))}}.oc-TextButton-module__textButton__71n5b:focus-visible:not(:disabled,[aria-disabled=true])>[data-oc-component=interaction]{opacity:var(--oc-interaction-opacity-focus);transform:scale(1)}@media(hover:hover){.oc-TextButton-module__textButton__71n5b:hover:not(:disabled,[aria-disabled=true])>[data-oc-component=interaction]{opacity:var(--oc-interaction-opacity-hover);transform:scale(1)}}.oc-TextButton-module__textButton__71n5b:active:not(:disabled,[aria-disabled=true]){transform:scale(max(0,1 + (.95 - 1) * var(--oc-motion-scale-factor-feedback)))}.oc-TextButton-module__textButton__71n5b:active:not(:disabled,[aria-disabled=true])>[data-oc-component=interaction]{opacity:var(--oc-interaction-opacity-active);transform:scale(1)}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__primary__dlRiO){--oc-text-button-color: var(--oc-color-theme-primary-normal)}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__assistive__wUKa-){--oc-text-button-color: var(--oc-color-theme-label-alternative)}.oc-TextButton-module__textButton__71n5b:disabled,.oc-TextButton-module__textButton__71n5b[aria-disabled=true]{--oc-text-button-color: var(--oc-color-theme-label-disable);cursor:not-allowed}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__medium__1VOra){font-size:calc(var(--oc-typo-size-body1) * var(--oc-typo-size-factor, 1));line-height:calc(var(--oc-typo-height-body1) * var(--oc-typo-size-factor, 1));letter-spacing:var(--oc-typo-spacing-body1);font-weight:var(--oc-typo-weight-body1-bold)}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__small__zxHdc){font-size:calc(var(--oc-typo-size-label1) * var(--oc-typo-size-factor, 1));line-height:calc(var(--oc-typo-height-label1) * var(--oc-typo-size-factor, 1));letter-spacing:var(--oc-typo-spacing-label1);font-weight:var(--oc-typo-weight-label1-bold)}.oc-TextButton-module__textButton__71n5b:where(.oc-TextButton-module__padding__1EgaV){--oc-text-button-padding-x: var(--oc-space-item-padding-small);--oc-text-button-padding-y: var(--oc-space-item-padding-small);--oc-interaction-inset-x: 0px;--oc-interaction-inset-y: 0px}@media(prefers-reduced-motion:reduce){.oc-TextButton-module__textButton__71n5b:active:not(:disabled,[aria-disabled=true]){transform:none}}
@@ -1,15 +1,17 @@
1
- import './TextButton.css';const t = "oc-TextButton-module__textButton__71n5b", o = "oc-TextButton-module__primary__dlRiO", e = "oc-TextButton-module__assistive__wUKa-", s = "oc-TextButton-module__medium__1VOra", _ = "oc-TextButton-module__small__zxHdc", m = {
1
+ import './TextButton.css';const t = "oc-TextButton-module__textButton__71n5b", o = "oc-TextButton-module__primary__dlRiO", e = "oc-TextButton-module__assistive__wUKa-", _ = "oc-TextButton-module__medium__1VOra", s = "oc-TextButton-module__small__zxHdc", n = "oc-TextButton-module__padding__1EgaV", u = {
2
2
  textButton: t,
3
3
  primary: o,
4
4
  assistive: e,
5
- medium: s,
6
- small: _
5
+ medium: _,
6
+ small: s,
7
+ padding: n
7
8
  };
8
9
  export {
9
10
  e as assistive,
10
- m as default,
11
- s as medium,
11
+ u as default,
12
+ _ as medium,
13
+ n as padding,
12
14
  o as primary,
13
- _ as small,
15
+ s as small,
14
16
  t as textButton
15
17
  };
@@ -1,39 +1,39 @@
1
- import { jsx as e } from "react/jsx-runtime";
2
- import { useRef as I, useState as R, useEffect as S } from "react";
3
- import E from "@orioncactuscorp/icons/orioncactus/ChevronDownTight";
4
- import { normalizeSlotIcon as p } from "./slot.js";
5
- const i = 180;
6
- function h({
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { useRef as p, useState as I, useEffect as R } from "react";
3
+ import S from "@orioncactuscorp/icons/orioncactus/ChevronDownTight";
4
+ import { normalizeSlotIcon as E } from "./slot.js";
5
+ const e = 180;
6
+ function _({
7
7
  open: t,
8
- children: o,
8
+ children: r,
9
9
  part: n = "indicator",
10
- rotationVariable: c = "--oc-disclosure-indicator-rotation",
11
- style: s,
12
- ...a
10
+ rotationVariable: a = "--oc-disclosure-indicator-rotation",
11
+ style: c,
12
+ ...s
13
13
  }) {
14
- const r = I(t), [u, d] = R(
15
- () => t ? i : 0
16
- ), f = o === void 0 ? /* @__PURE__ */ e(E, { size: "custom" }) : o, m = {
17
- ...s,
18
- [c]: `${u}deg`
14
+ const i = p(t), [d, u] = I(
15
+ () => t ? e : 0
16
+ ), f = r === void 0 ? /* @__PURE__ */ o(S, { size: "custom" }) : r, m = {
17
+ ...c,
18
+ [a]: `${d}deg`
19
19
  };
20
- return S(() => {
21
- r.current !== t && (r.current = t, d(
22
- (l) => l + i
20
+ return R(() => {
21
+ i.current !== t && (i.current = t, u(
22
+ (l) => l + e
23
23
  ));
24
- }, [t]), /* @__PURE__ */ e(
24
+ }, [t]), /* @__PURE__ */ o(
25
25
  "span",
26
26
  {
27
- ...a,
27
+ ...s,
28
28
  "aria-hidden": "true",
29
29
  "data-oc-part": n,
30
30
  "data-oc-state": t ? "open" : "closed",
31
31
  style: m,
32
- children: p(f)
32
+ children: /* @__PURE__ */ o("span", { "data-oc-part": "indicator-frame", children: E(f) })
33
33
  }
34
34
  );
35
35
  }
36
36
  export {
37
- h as DisclosureIndicator,
38
- h as default
37
+ _ as DisclosureIndicator,
38
+ _ as default
39
39
  };