@infonomic/uikit 5.2.0 → 5.3.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.
@@ -1,10 +1,15 @@
1
- import type React from 'react';
2
- type ScrollToTopIntrinsicProps = React.JSX.IntrinsicElements['button'];
3
- interface ScrollToTopProps extends ScrollToTopIntrinsicProps {
1
+ import { type ComponentProps } from 'react';
2
+ export interface ScrollToTopProps extends ComponentProps<'button'> {
3
+ /**
4
+ * The scroll position (Y-axis) in pixels that triggers the button to appear.
5
+ * @default 200
6
+ */
7
+ showAt?: number;
8
+ /**
9
+ * The target scroll position (Y-axis) to scroll to when clicked.
10
+ * @default -65
11
+ */
4
12
  offset?: number;
5
13
  }
6
- export type { ScrollToTopProps };
7
- export declare const ScrollToTop: ({ ref, offset, ...rest }: ScrollToTopProps & {
8
- ref?: React.RefObject<HTMLButtonElement>;
9
- }) => React.JSX.Element;
14
+ export declare function ScrollToTop({ className, showAt, offset, type, 'aria-label': ariaLabel, onClick, ...props }: ScrollToTopProps): import("react").JSX.Element;
10
15
  //# sourceMappingURL=scroll-to-top.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-to-top.d.ts","sourceRoot":"","sources":["../../../src/components/scroll-to-top/scroll-to-top.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,KAAK,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;AACtE,UAAU,gBAAiB,SAAQ,yBAAyB;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAA;AAEhC,eAAO,MAAM,WAAW,GAAwB,0BAI7C,gBAAgB,GAAG;IACpB,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;CACzC,sBA4CA,CAAA"}
1
+ {"version":3,"file":"scroll-to-top.d.ts","sourceRoot":"","sources":["../../../src/components/scroll-to-top/scroll-to-top.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAuB,MAAM,OAAO,CAAA;AAIhE,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAChE;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,MAAY,EACZ,MAAY,EACZ,IAAe,EACf,YAAY,EAAE,SAA2B,EACzC,OAAO,EACP,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAuDlB"}
@@ -3,44 +3,53 @@ import { jsx } from "react/jsx-runtime";
3
3
  import classnames from "classnames";
4
4
  import { useEffect, useState } from "react";
5
5
  import scroll_to_top_module from "./scroll-to-top.module.js";
6
- const scroll_to_top_ScrollToTop = function({ ref, offset = -65, ...rest }) {
6
+ function ScrollToTop({ className, showAt = 200, offset = -65, type = 'button', 'aria-label': ariaLabel = 'Scroll to top', onClick, ...props }) {
7
7
  const [show, setShow] = useState(false);
8
- const handleOnClick = ()=>{
8
+ const handleOnClick = (e)=>{
9
9
  window.scrollTo({
10
10
  top: offset,
11
11
  left: 0,
12
12
  behavior: 'smooth'
13
13
  });
14
+ onClick?.(e);
14
15
  };
15
16
  useEffect(()=>{
17
+ let ticking = false;
16
18
  const handleOnScroll = ()=>{
17
- const scrollTop = window.scrollY;
18
- scrollTop > 200 ? setShow(true) : setShow(false);
19
- console.log('scrollTop', scrollTop);
19
+ if (!ticking) {
20
+ window.requestAnimationFrame(()=>{
21
+ setShow(window.scrollY > showAt);
22
+ ticking = false;
23
+ });
24
+ ticking = true;
25
+ }
20
26
  };
21
- if ('undefined' != typeof window) window.addEventListener('scroll', handleOnScroll);
27
+ window.addEventListener('scroll', handleOnScroll, {
28
+ passive: true
29
+ });
22
30
  return ()=>{
23
31
  window.removeEventListener('scroll', handleOnScroll);
24
32
  };
25
- }, []);
33
+ }, [
34
+ showAt
35
+ ]);
26
36
  return /*#__PURE__*/ jsx("button", {
27
- ref: ref,
28
- ...rest,
37
+ type: type,
38
+ "aria-label": ariaLabel,
29
39
  onClick: handleOnClick,
30
- type: "button",
31
- id: "scroll-to-top",
32
40
  className: classnames('scroll-to-top', scroll_to_top_module["scroll-to-top"], {
33
41
  'scroll-to-top-shown': show,
34
42
  [scroll_to_top_module["scroll-to-top-shown"]]: show
35
- }),
43
+ }, className),
44
+ ...props,
36
45
  children: /*#__PURE__*/ jsx("span", {
46
+ "aria-hidden": "true",
37
47
  children: /*#__PURE__*/ jsx("svg", {
38
48
  className: "icon",
39
49
  style: {
40
50
  fill: 'currentColor'
41
51
  },
42
52
  focusable: "false",
43
- "aria-hidden": "true",
44
53
  viewBox: "0 0 51 32",
45
54
  children: /*#__PURE__*/ jsx("path", {
46
55
  d: "M25.4,9.8L45.6,30l4.5-4.5L25.4,0.8L0.8,25.4L5.3,30L25.4,9.8z"
@@ -48,5 +57,5 @@ const scroll_to_top_ScrollToTop = function({ ref, offset = -65, ...rest }) {
48
57
  })
49
58
  })
50
59
  });
51
- };
52
- export { scroll_to_top_ScrollToTop as ScrollToTop };
60
+ }
61
+ export { ScrollToTop };
@@ -1 +1 @@
1
- @layer infonomic-base,infonomic-functional,infonomic-utilities,infonomic-theme,infonomic-typography;@layer infonomic-components{:is(.card-mqJaiW,.card){width:100%;max-width:100%;color:var(--foreground);background:var(--canvas-25);border-width:var(--border-width-thin);border-color:var(--border-color);border-style:var(--border-style-solid);border-radius:var(--border-radius-md);box-shadow:var(--shadow-sm);flex-direction:column;text-decoration:none;display:flex}:is(.card-mqJaiW:is(.dark *),.card:is(.dark *)){background:var(--canvas-800)}:is(.card-hover-hvT4d6,.card-hover){transition:background .2s ease-in-out}:is(.card-hover-hvT4d6:hover,.card-hover:hover){background:oklch(from var(--theme-50)1 .03 h)}:is(.card-hover-hvT4d6:hover:is(.dark *),.card-hover:hover:is(.dark *)){background:oklch(from var(--canvas-800).2 c h)}:is(.card-header-XnoBkP,.card-header){flex-direction:column;gap:.5rem;padding:1rem;display:flex}:is(.card-title-JI7Lu3,.card-title){color:var(--headings);letter-spacing:-.015em;font-size:1.8rem;font-weight:700;line-height:1}:is(.card-description-fwu7HE,.card-description){color:var(--muted);font-size:.875rem}:is(.card-content-uhoZYJ,.card-content){flex:1;padding:0 1rem 1rem}:is(.card-footer-BxTa4b,.card-footer){align-items:center;padding:0 1rem 1rem;display:flex}:is(.container-tSpizY,.container){width:100%;max-width:60rem;margin:0 auto;padding:0 1rem}@media (width>=66rem){:is(.container-tSpizY,.container){max-width:64rem}}@media (width>=77rem){:is(.container-tSpizY,.container){max-width:74.375rem}}@media (width>=94rem){:is(.container-tSpizY,.container){max-width:87.5rem}}:is(.badge-8xVidp,.badge){font-size:var(--font-size-sm);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--border-radius-sm);padding:.25em .4em;font-weight:400;line-height:1;display:inline-block}:is(.primary-oZyR_M,.badge-primary){color:var(--text-on-primary);background-color:var(--fill-primary-strong)}:is(.secondary-VsqJTm,.badge-secondary){color:var(--text-on-secondary);background-color:var(--fill-secondary-strong)}:is(.noeffect-R8eJtO,.badge-noeffect){color:var(--text-on-noeffect);background-color:var(--fill-noeffect-strong)}:is(.success-h2otET,.badge-success){color:var(--text-on-success);background-color:var(--fill-success-strong)}:is(.info-OG3F3u,.badge-info){color:var(--text-on-info);background-color:var(--fill-info-strong)}:is(.warning-zTXksZ,.badge-warning){color:var(--text-on-warning);background-color:var(--fill-warning-strong)}:is(.danger-hKF7l_,.badge-danger){color:var(--text-on-danger);background-color:var(--fill-danger-strong)}:is(.button-IjDhC0,.button){cursor:pointer;text-align:center;gap:var(--gap-2);white-space:nowrap;outline-offset:2px;transition:background-color var(--transition-normal),box-shadow var(--transition-normal);border-radius:var(--border-radius-sm);border:none;outline:2px solid #0000;justify-content:center;align-items:center;font-weight:400;line-height:0;display:inline-flex}:is(.button-IjDhC0:disabled,.button-IjDhC0[disabled],.button:disabled,.button[disabled]){pointer-events:none}:is(.button-IjDhC0:focus,.button-IjDhC0:active,.button:focus,.button:active){--ring-offset-color:var(--background);--ring-offset-shadow:var(--ring-inset)0 0 0 var(--ring-offset-width)var(--ring-offset-color);--ring-shadow:var(--ring-inset)0 0 0 calc(1px + var(--ring-offset-width))var(--ring-color);box-shadow:var(--ring-offset-shadow),var(--ring-shadow),var(--shadow,0 0 #0000)}.button-IjDhC0.square-P_6yde,.button-square{aspect-ratio:1;border-radius:var(--border-radius-sm);padding:0}.button-IjDhC0.round-uqus3n,.button-round{aspect-ratio:1;border-radius:var(--border-radius-full);padding:0}:is(.xs-jxTd5R,.button-xs){min-height:26px;padding:.2rem .4rem;font-size:.7rem}:is(.sm-uD_Ugt,.button-sm){min-height:32px;padding:.25rem .5rem;font-size:.775rem}:is(.md-Qp9ad6,.button-md){min-height:38px;padding:.625rem 1.25rem;font-size:.95rem}:is(.lg-FAYTen,.button-lg){min-height:46px;padding:.75rem 1.5rem;font-size:1.1rem}:is(.xl-Gwvhl4,.button-xl){min-height:54px;padding:.75rem 1.5rem;font-size:1.2rem}:is(.filled-CwGsrO,.button-filled){color:var(--button-variant-filled-foreground);background-color:var(--button-variant-filled)}:is(.filled-CwGsrO:hover,.button-filled:hover){background-color:var(--button-variant-filled-hover)}:is(.filled-CwGsrO:focus,.filled-CwGsrO:active,.button-filled:focus,.button-filled:active){--ring-color:var(--button-ring-color)}:is(.filled-CwGsrO:disabled,.filled-CwGsrO[disabled],.button-filled:disabled,.button-filled[disabled]){background-color:var(--button-variant-filled-disabled,oklch(from var(--button-variant-filled)calc(l*1.1)calc(c*.85)h));color:var(--button-variant-filled-foreground-disabled,oklch(from var(--button-variant-filled-foreground)calc(l*.9)calc(c*.85)h))}:is(.outlined-nZGbxu,.button-outlined){border:1px solid var(--button-variant-outlined-border);color:var(--button-variant-outlined-foreground);background-color:var(--button-variant-outlined)}:is(.outlined-nZGbxu:disabled,.outlined-nZGbxu[disabled],.button-outlined:disabled,.button-outlined[disabled]){border-color:var(--button-variant-outlined-border-disabled,oklch(from var(--button-variant-outlined-border)calc(l*1.5)calc(c*.8)h));color:var(--button-variant-outlined-foreground-disabled,oklch(from var(--button-variant-outlined-foreground)calc(l*1.1)calc(c*.7)h))}:is(.outlined-nZGbxu:hover,.button-outlined:hover){background-color:var(--button-variant-outlined-hover)}:is(.outlined-nZGbxu:focus,.outlined-nZGbxu:active,.button-outlined:focus,.button-outlined:active){--ring-color:var(--button-ring-color)}:is(.gradient-ySC3O3,.button-gradient){color:var(--button-variant-gradient-foreground);background:linear-gradient(45deg,var(--button-variant-gradient-start),var(--button-variant-gradient-end))}:is(.gradient-ySC3O3:disabled,.gradient-ySC3O3[disabled],.button-gradient:disabled,.button-gradient[disabled]){background:unset;background-color:var(--button-variant-gradient-disabled,oklch(from var(--button-variant-gradient-end)calc(l*1.2)calc(c*.85)h));color:var(--button-variant-gradient-foreground-disabled,oklch(from var(--button-variant-gradient-foreground)calc(l*.9)calc(c*.85)h))}:is(.gradient-ySC3O3:hover,.button-gradient:hover){color:var(--button-variant-gradient-foreground);background:linear-gradient(45deg,var(--button-variant-gradient-start),var(--button-variant-gradient-end))}:is(.gradient-ySC3O3:focus,.gradient-ySC3O3:active,.button-gradient:focus,.button-gradient:active){--ring-color:var(--button-ring-color)}:is(.text-GaxlcE,.button-text){background-color:var(--button-variant-text);color:var(--button-variant-text-foreground)}:is(.text-GaxlcE:disabled,.text-GaxlcE[disabled],.button-text:disabled,.button-text[disabled]){color:oklch(from var(--button-variant-text-foreground)calc(l*1.5)calc(c*.5)h)}:is(.text-GaxlcE:hover,.button-text:hover){background-color:var(--button-variant-text-hover)}:is(.text-GaxlcE:focus,.text-GaxlcE:active,.button-text:focus,.button-text:active){--ring-color:var(--button-ring-color)}:is(.primary-tUmczz,.button-primary){--button-ring-color:var(--ring-primary);--button-variant-filled:var(--fill-primary-strong);--button-variant-filled-foreground:var(--text-on-primary);--button-variant-filled-hover:var(--fill-primary-strong-hover);--button-variant-filled-disabled:var(--fill-primary-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-primary-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-primary-strong);--button-variant-outlined-hover:var(--fill-primary-weak);--button-variant-outlined-border:var(--stroke-primary);--button-variant-outlined-border-disabled:var(--stroke-primary-disabled);--button-variant-outlined-foreground-disabled:var(--text-primary-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-primary-weak);--button-variant-text-hover:var(--fill-primary-weak-hover);--button-variant-gradient-start:var(--gradient-primary-start);--button-variant-gradient-end:var(--gradient-primary-end);--button-variant-gradient-foreground:var(--gradient-primary-foreground);--button-variant-gradient-disabled:var(--gradient-primary-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-primary-disabled)}:is(.secondary-UqT2AY,.button-secondary){--button-ring-color:var(--ring-secondary);--button-variant-filled:var(--fill-secondary-strong);--button-variant-filled-foreground:var(--text-on-secondary);--button-variant-filled-hover:var(--fill-secondary-strong-hover);--button-variant-filled-disabled:var(--fill-secondary-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-secondary-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-secondary-strong);--button-variant-outlined-hover:var(--fill-secondary-weak);--button-variant-outlined-border:var(--stroke-secondary);--button-variant-outlined-border-disabled:var(--stroke-secondary-disabled);--button-variant-outlined-foreground-disabled:var(--text-secondary-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-secondary-weak);--button-variant-text-hover:var(--fill-secondary-weak-hover);--button-variant-gradient-start:var(--gradient-secondary-start);--button-variant-gradient-end:var(--gradient-secondary-end);--button-variant-gradient-foreground:var(--gradient-secondary-foreground);--button-variant-gradient-disabled:var(--gradient-secondary-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-secondary-disabled)}:is(.noeffect-fpxSgg,.button-noeffect){--button-ring-color:var(--ring-noeffect);--button-variant-filled:var(--fill-noeffect-strong);--button-variant-filled-foreground:var(--text-on-noeffect);--button-variant-filled-hover:var(--fill-noeffect-strong-hover);--button-variant-filled-disabled:var(--fill-noeffect-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-noeffect-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-noeffect-strong);--button-variant-outlined-hover:var(--fill-noeffect-weak);--button-variant-outlined-border:var(--stroke-noeffect);--button-variant-outlined-border-disabled:var(--stroke-noeffect-disabled);--button-variant-outlined-foreground-disabled:var(--text-noeffect-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-noeffect-weak);--button-variant-text-hover:var(--fill-noeffect-weak-hover);--button-variant-gradient-start:var(--gradient-noeffect-start);--button-variant-gradient-end:var(--gradient-noeffect-end);--button-variant-gradient-foreground:var(--gradient-noeffect-foreground);--button-variant-gradient-disabled:var(--gradient-noeffect-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-noeffect-disabled)}:is(.success-fTNDEn,.button-success){--button-ring-color:var(--ring-success);--button-variant-filled:var(--fill-success-strong);--button-variant-filled-foreground:var(--text-on-success);--button-variant-filled-hover:var(--fill-success-strong-hover);--button-variant-filled-disabled:var(--fill-success-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-success-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-success-strong);--button-variant-outlined-hover:var(--fill-success-weak);--button-variant-outlined-border:var(--stroke-success);--button-variant-outlined-border-disabled:var(--stroke-success-disabled);--button-variant-outlined-foreground-disabled:var(--text-success-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-success-weak);--button-variant-text-hover:var(--fill-success-weak-hover);--button-variant-gradient-start:var(--gradient-success-start);--button-variant-gradient-end:var(--gradient-success-end);--button-variant-gradient-foreground:var(--gradient-success-foreground);--button-variant-gradient-disabled:var(--gradient-success-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-success-disabled)}:is(.info-qrdXQD,.button-info){--button-ring-color:var(--ring-info);--button-variant-filled:var(--fill-info-strong);--button-variant-filled-foreground:var(--text-on-info);--button-variant-filled-hover:var(--fill-info-strong-hover);--button-variant-filled-disabled:var(--fill-info-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-info-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-info-strong);--button-variant-outlined-hover:var(--fill-info-weak);--button-variant-outlined-border:var(--stroke-info);--button-variant-outlined-border-disabled:var(--stroke-info-disabled);--button-variant-outlined-foreground-disabled:var(--text-info-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-info-weak);--button-variant-text-hover:var(--fill-info-weak-hover);--button-variant-gradient-start:var(--gradient-info-start);--button-variant-gradient-end:var(--gradient-info-end);--button-variant-gradient-foreground:var(--gradient-info-foreground);--button-variant-gradient-disabled:var(--gradient-info-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-info-disabled)}:is(.warning-a00T3A,.button-warning){--button-ring-color:var(--ring-warning);--button-variant-filled:var(--fill-warning-strong);--button-variant-filled-foreground:var(--text-on-warning);--button-variant-filled-hover:var(--fill-warning-strong-hover);--button-variant-filled-disabled:var(--fill-warning-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-warning-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-warning-strong);--button-variant-outlined-hover:var(--fill-warning-weak);--button-variant-outlined-border:var(--stroke-warning);--button-variant-outlined-border-disabled:var(--stroke-warning-disabled);--button-variant-outlined-foreground-disabled:var(--text-warning-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-warning-weak);--button-variant-text-hover:var(--fill-warning-weak-hover);--button-variant-gradient-start:var(--gradient-warning-start);--button-variant-gradient-end:var(--gradient-warning-end);--button-variant-gradient-foreground:var(--gradient-warning-foreground);--button-variant-gradient-disabled:var(--gradient-warning-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-warning-disabled)}:is(.danger-rwIV_i,.button-danger){--button-ring-color:var(--ring-danger);--button-variant-filled:var(--fill-danger-strong);--button-variant-filled-foreground:var(--text-on-danger);--button-variant-filled-hover:var(--fill-danger-strong-hover);--button-variant-filled-disabled:var(--fill-danger-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-danger-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-danger-strong);--button-variant-outlined-hover:var(--fill-danger-weak);--button-variant-outlined-border:var(--stroke-danger);--button-variant-outlined-border-disabled:var(--stroke-danger-disabled);--button-variant-outlined-foreground-disabled:var(--text-danger-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-danger-weak);--button-variant-text-hover:var(--fill-danger-weak-hover);--button-variant-gradient-start:var(--gradient-danger-start);--button-variant-gradient-end:var(--gradient-danger-end);--button-variant-gradient-foreground:var(--gradient-danger-foreground);--button-variant-gradient-disabled:var(--gradient-danger-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-danger-disabled)}:is(.fullWidth-wXvP0v,.button-full-width){width:100%;display:flex}:is(.button-group-uqvOi8,.button-group){place-items:center;gap:var(--gap-2);flex-direction:column;display:flex}@media screen and (width>=40rem){:is(.button-group-uqvOi8,.button-group){flex-direction:row}}:is(.copy-button-container-vCNz8o,.copy-button-container){display:inline-block}:is(.copy-button-oa4bdj svg,.copy-button svg){width:90%;height:90%;display:block}:is(.xs-lZmf78,.copy-button-xs){width:26px;height:26px;min-height:26px;padding:.25rem}:is(.sm-KNN1e5,.copy-button-sm){width:32px;height:32px;min-height:32px;padding:.35rem}:is(.md-OoH0l4,.copy-button-md){width:38px;height:38px;min-height:38px;padding:.45rem}:is(.lg-uu5ujz,.copy-button-lg){width:46px;height:46px;min-height:46px;padding:.55rem}:is(.xl-pFYyrS,.copy-button-xl){width:54px;height:54px;min-height:54px;padding:.65rem}:is(.input-wrapper-xxN94z,.input-wrapper){gap:var(--gap-1);flex-direction:column;display:flex}:is(.input-container-GveKcr,.input-container){align-items:center;gap:var(--gap-2);display:flex;position:relative}:is(.input-voSL1w,.input){gap:var(--gap-2);width:100%;transition:all var(--transition-normal);border-radius:var(--border-radius-sm);border:none;outline:none;align-items:center;font-weight:400;display:inline-flex}:is(.input-voSL1w:focus,.input-voSL1w:active,.input:focus,.input:active){--ring-offset-color:var(--background);--ring-offset-shadow:var(--ring-inset)0 0 0 var(--ring-offset-width)var(--ring-offset-color);--ring-shadow:var(--ring-inset)0 0 0 calc(1px + var(--ring-offset-width))var(--ring-color);box-shadow:var(--ring-offset-shadow),var(--ring-shadow),var(--shadow,0 0 #0000)}:is(.input-voSL1w:disabled,.input-voSL1w[disabled],.input:disabled,.input[disabled]){pointer-events:none}:is(.label-a8k0oS,.input-label){color:var(--label-color);font-size:.875rem;font-weight:500}:is(.sm-cI5ETu,.input-sm){min-height:32px;padding:.25rem .5rem;font-size:.875rem;line-height:0}:is(.md-moqLi4,.input-md){min-height:38px;padding:.4rem .5rem;font-size:1.1rem;line-height:0}:is(.lg-Tn3YZZ,.input-lg){min-height:46px;padding:.5rem;font-size:1.2rem;line-height:0}:is(.start-adornment-H0sdmX,.end-adornment-xl3mid,.input-start-adornment,.input-end-adornment){align-items:center;display:flex;position:absolute}:is(.start-adornment-H0sdmX,.input-start-adornment){left:5px}:is(.end-adornment-xl3mid,.input-end-adornment){right:5px}:is(.help-text-MZW4yX,.input-help-text){color:var(--help-text-color);font-size:.75rem}:is(.outlined-xbB8mE,.input-outlined){border:1px solid var(--input-variant-outlined-border);background-color:#0000}:is(.outlined-xbB8mE:hover,.input-outlined:hover){border:1px solid var(--input-variant-outlined-hover-border)}:is(.outlined-xbB8mE:focus,.outlined-xbB8mE:active,.input-outlined:focus,.input-outlined:active){--ring-color:var(--input-variant-outline-ring-color)}:is(.underlined-zAz2HP,.input-underlined){border-bottom:1px solid var(--input-variant-underlined-border);gap:var(--gap-1);background-color:var(--input-variant-underlined);border-radius:0}.underlined-zAz2HP.sm-cI5ETu,.input-underlined.input-sm{min-height:26px;padding:.25rem .1rem}.underlined-zAz2HP.md-moqLi4,.input-underlined.input-md{min-height:30px;padding:.25rem .1rem}.underlined-zAz2HP.lg-Tn3YZZ,.input-underlined.input-lg{min-height:34px;padding:0 .1rem}:is(.underlined-zAz2HP:hover,.input-underlined:hover){border-bottom:1px solid var(--input-variant-underlined-hover-border)}:is(.filled-M1_LzJ,.input-filled){background-color:var(--input-variant-filled)}:is(.error-n0kSb0,.input-error),:is(.error-n0kSb0:hover,.input-error:hover){border:1px solid var(--red-400)}:is(.error-n0kSb0:focus,.error-n0kSb0:active,.input-error:focus,.input-error:active){--ring-color:var(--red-300)}.underlined-zAz2HP.start-adornment-padding-YAcYOx,.start-adornment-padding-YAcYOx,.input-underlined.input-start-adornment-padding,.input-start-adornment-padding{padding-left:2rem}.underlined-zAz2HP.end-adornment-padding-nC63CK,.end-adornment-padding-nC63CK,.input-underlined.input-end-adornment-padding,.input-end-adornment-padding{padding-right:2rem}.underlined-zAz2HP.start-adornment-H0sdmX,.input-underlined.input-start-adornment{left:0}.underlined-zAz2HP.end-adornment-xl3mid,.input-underlined.input-end-adornment{right:0}:is(.primary-xZZpZI,.input-primary){--input-variant-outlined-border:var(--stroke-primary);--input-variant-outlined-hover-border:var(--stroke-primary-hover);--input-variant-outline-ring-color:var(--ring-primary);--input-variant-underlined-border:var(--stroke-primary);--input-variant-underlined-hover-border:var(--stroke-primary-hover);--input-variant-filled:var(--fill-primary-weak)}:is(.secondary-WWDy2x,.input-secondary){--input-variant-outlined-border:var(--stroke-secondary);--input-variant-outlined-hover-border:var(--stroke-secondary-hover);--input-variant-outline-ring-color:var(--ring-secondary);--input-variant-underlined-border:var(--stroke-secondary);--input-variant-underlined-hover-border:var(--stroke-secondary-hover);--input-variant-filled:var(--fill-secondary-weak)}:is(.noeffect-LHbgak,.input-noeffect){--input-variant-outlined-border:var(--stroke-noeffect);--input-variant-outlined-hover-border:var(--stroke-noeffect-hover);--input-variant-outline-ring-color:var(--ring-noeffect);--input-variant-underlined-border:var(--stroke-noeffect);--input-variant-underlined-hover-border:var(--stroke-noeffect-hover);--input-variant-filled:var(--fill-noeffect-weak)}:is(.success-pMbTwx,.input-success){--input-variant-outlined-border:var(--stroke-success);--input-variant-outlined-hover-border:var(--stroke-success-hover);--input-variant-outline-ring-color:var(--ring-success);--input-variant-underlined-border:var(--stroke-success);--input-variant-underlined-hover-border:var(--stroke-success-hover);--input-variant-filled:var(--fill-success-weak)}:is(.info-SRpUkb,.input-info){--input-variant-outlined-border:var(--stroke-info);--input-variant-outlined-hover-border:var(--stroke-info-hover);--input-variant-outline-ring-color:var(--ring-info);--input-variant-underlined-border:var(--stroke-info);--input-variant-underlined-hover-border:var(--stroke-info-hover);--input-variant-filled:var(--fill-info-weak)}:is(.warning-mHL8O2,.input-warning){--input-variant-outlined-border:var(--stroke-warning);--input-variant-outlined-hover-border:var(--stroke-warning-hover);--input-variant-outline-ring-color:var(--ring-warning);--input-variant-underlined-border:var(--stroke-warning);--input-variant-underlined-hover-border:var(--stroke-warning-hover);--input-variant-filled:var(--fill-warning-weak)}:is(.danger-Rzx3WQ,.input-danger){--input-variant-outlined-border:var(--stroke-danger);--input-variant-outlined-hover-border:var(--stroke-danger-hover);--input-variant-outline-ring-color:var(--ring-danger);--input-variant-underlined-border:var(--stroke-danger);--input-variant-underlined-hover-border:var(--stroke-danger-hover);--input-variant-filled:var(--fill-danger-weak)}:is(.adornment-IbSUaL,.input-adornment){white-space:nowrap;align-items:center;line-height:0;display:flex}:is(.start-hcDqEk,.input-adornment-start){justify-content:flex-start}:is(.end-j0ZhyO,.input-adornment-end){justify-content:flex-end}:is(.text-area-P_aQjC,.text-area){width:100%;padding:.5rem;font-size:1.1rem}:is(.label-Q88hWY,.label){color:var(--text);font-weight:500;display:block}:is(.required-uod5eu,.label-required){color:var(--error)}:is(.text-xJE0DB,.error-text){color:var(--error);font-size:.875rem}:is(.text-U6KD9f,.help-text){color:var(--muted);font-size:.875rem}:is(.section-CEcZOp,.section){width:100%;position:relative}}
1
+ @layer infonomic-base,infonomic-functional,infonomic-utilities,infonomic-theme,infonomic-typography;@layer infonomic-components{:is(.card-mqJaiW,.card){width:100%;max-width:100%;color:var(--foreground);background:var(--canvas-25);border-width:var(--border-width-thin);border-color:var(--border-color);border-style:var(--border-style-solid);border-radius:var(--border-radius-md);box-shadow:var(--shadow-sm);flex-direction:column;text-decoration:none;display:flex}:is(.card-mqJaiW:is(.dark *),.card:is(.dark *)){background:var(--canvas-800)}:is(.card-hover-hvT4d6,.card-hover){transition:background .2s ease-in-out}:is(.card-hover-hvT4d6:hover,.card-hover:hover){background:oklch(from var(--theme-50)1 .03 h)}:is(.card-hover-hvT4d6:hover:is(.dark *),.card-hover:hover:is(.dark *)){background:oklch(from var(--canvas-800).2 c h)}:is(.card-header-XnoBkP,.card-header){flex-direction:column;gap:.5rem;padding:1rem;display:flex}:is(.card-title-JI7Lu3,.card-title){color:var(--headings);letter-spacing:-.015em;font-size:1.8rem;font-weight:700;line-height:1}:is(.card-description-fwu7HE,.card-description){color:var(--muted);font-size:.875rem}:is(.card-content-uhoZYJ,.card-content){flex:1;padding:0 1rem 1rem}:is(.card-footer-BxTa4b,.card-footer){align-items:center;padding:0 1rem 1rem;display:flex}:is(.container-tSpizY,.container){width:100%;max-width:60rem;margin:0 auto;padding:0 1rem}@media (width>=66rem){:is(.container-tSpizY,.container){max-width:64rem}}@media (width>=77rem){:is(.container-tSpizY,.container){max-width:74.375rem}}@media (width>=94rem){:is(.container-tSpizY,.container){max-width:87.5rem}}:is(.badge-8xVidp,.badge){font-size:var(--font-size-sm);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--border-radius-sm);padding:.25em .4em;font-weight:400;line-height:1;display:inline-block}:is(.primary-oZyR_M,.badge-primary){color:var(--text-on-primary);background-color:var(--fill-primary-strong)}:is(.secondary-VsqJTm,.badge-secondary){color:var(--text-on-secondary);background-color:var(--fill-secondary-strong)}:is(.noeffect-R8eJtO,.badge-noeffect){color:var(--text-on-noeffect);background-color:var(--fill-noeffect-strong)}:is(.success-h2otET,.badge-success){color:var(--text-on-success);background-color:var(--fill-success-strong)}:is(.info-OG3F3u,.badge-info){color:var(--text-on-info);background-color:var(--fill-info-strong)}:is(.warning-zTXksZ,.badge-warning){color:var(--text-on-warning);background-color:var(--fill-warning-strong)}:is(.danger-hKF7l_,.badge-danger){color:var(--text-on-danger);background-color:var(--fill-danger-strong)}:is(.button-IjDhC0,.button){cursor:pointer;text-align:center;gap:var(--gap-2);white-space:nowrap;outline-offset:2px;transition:background-color var(--transition-normal),box-shadow var(--transition-normal);border-radius:var(--border-radius-sm);border:none;outline:2px solid #0000;justify-content:center;align-items:center;font-weight:400;line-height:0;display:inline-flex}:is(.button-IjDhC0:disabled,.button-IjDhC0[disabled],.button:disabled,.button[disabled]){pointer-events:none}:is(.button-IjDhC0:focus,.button-IjDhC0:active,.button:focus,.button:active){--ring-offset-color:var(--background);--ring-offset-shadow:var(--ring-inset)0 0 0 var(--ring-offset-width)var(--ring-offset-color);--ring-shadow:var(--ring-inset)0 0 0 calc(1px + var(--ring-offset-width))var(--ring-color);box-shadow:var(--ring-offset-shadow),var(--ring-shadow),var(--shadow,0 0 #0000)}.button-IjDhC0.square-P_6yde,.button-square{aspect-ratio:1;border-radius:var(--border-radius-sm);padding:0}.button-IjDhC0.round-uqus3n,.button-round{aspect-ratio:1;border-radius:var(--border-radius-full);padding:0}:is(.xs-jxTd5R,.button-xs){min-height:26px;padding:.2rem .4rem;font-size:.7rem}:is(.sm-uD_Ugt,.button-sm){min-height:32px;padding:.25rem .5rem;font-size:.775rem}:is(.md-Qp9ad6,.button-md){min-height:38px;padding:.625rem 1.25rem;font-size:.95rem}:is(.lg-FAYTen,.button-lg){min-height:46px;padding:.75rem 1.5rem;font-size:1.1rem}:is(.xl-Gwvhl4,.button-xl){min-height:54px;padding:.75rem 1.5rem;font-size:1.2rem}:is(.filled-CwGsrO,.button-filled){color:var(--button-variant-filled-foreground);background-color:var(--button-variant-filled)}:is(.filled-CwGsrO:hover,.button-filled:hover){background-color:var(--button-variant-filled-hover)}:is(.filled-CwGsrO:focus,.filled-CwGsrO:active,.button-filled:focus,.button-filled:active){--ring-color:var(--button-ring-color)}:is(.filled-CwGsrO:disabled,.filled-CwGsrO[disabled],.button-filled:disabled,.button-filled[disabled]){background-color:var(--button-variant-filled-disabled,oklch(from var(--button-variant-filled)calc(l*1.1)calc(c*.85)h));color:var(--button-variant-filled-foreground-disabled,oklch(from var(--button-variant-filled-foreground)calc(l*.9)calc(c*.85)h))}:is(.outlined-nZGbxu,.button-outlined){border:1px solid var(--button-variant-outlined-border);color:var(--button-variant-outlined-foreground);background-color:var(--button-variant-outlined)}:is(.outlined-nZGbxu:disabled,.outlined-nZGbxu[disabled],.button-outlined:disabled,.button-outlined[disabled]){border-color:var(--button-variant-outlined-border-disabled,oklch(from var(--button-variant-outlined-border)calc(l*1.5)calc(c*.8)h));color:var(--button-variant-outlined-foreground-disabled,oklch(from var(--button-variant-outlined-foreground)calc(l*1.1)calc(c*.7)h))}:is(.outlined-nZGbxu:hover,.button-outlined:hover){background-color:var(--button-variant-outlined-hover)}:is(.outlined-nZGbxu:focus,.outlined-nZGbxu:active,.button-outlined:focus,.button-outlined:active){--ring-color:var(--button-ring-color)}:is(.gradient-ySC3O3,.button-gradient){color:var(--button-variant-gradient-foreground);background:linear-gradient(45deg,var(--button-variant-gradient-start),var(--button-variant-gradient-end))}:is(.gradient-ySC3O3:disabled,.gradient-ySC3O3[disabled],.button-gradient:disabled,.button-gradient[disabled]){background:unset;background-color:var(--button-variant-gradient-disabled,oklch(from var(--button-variant-gradient-end)calc(l*1.2)calc(c*.85)h));color:var(--button-variant-gradient-foreground-disabled,oklch(from var(--button-variant-gradient-foreground)calc(l*.9)calc(c*.85)h))}:is(.gradient-ySC3O3:hover,.button-gradient:hover){color:var(--button-variant-gradient-foreground);background:linear-gradient(45deg,var(--button-variant-gradient-start),var(--button-variant-gradient-end))}:is(.gradient-ySC3O3:focus,.gradient-ySC3O3:active,.button-gradient:focus,.button-gradient:active){--ring-color:var(--button-ring-color)}:is(.text-GaxlcE,.button-text){background-color:var(--button-variant-text);color:var(--button-variant-text-foreground)}:is(.text-GaxlcE:disabled,.text-GaxlcE[disabled],.button-text:disabled,.button-text[disabled]){color:oklch(from var(--button-variant-text-foreground)calc(l*1.5)calc(c*.5)h)}:is(.text-GaxlcE:hover,.button-text:hover){background-color:var(--button-variant-text-hover)}:is(.text-GaxlcE:focus,.text-GaxlcE:active,.button-text:focus,.button-text:active){--ring-color:var(--button-ring-color)}:is(.primary-tUmczz,.button-primary){--button-ring-color:var(--ring-primary);--button-variant-filled:var(--fill-primary-strong);--button-variant-filled-foreground:var(--text-on-primary);--button-variant-filled-hover:var(--fill-primary-strong-hover);--button-variant-filled-disabled:var(--fill-primary-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-primary-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-primary-strong);--button-variant-outlined-hover:var(--fill-primary-weak);--button-variant-outlined-border:var(--stroke-primary);--button-variant-outlined-border-disabled:var(--stroke-primary-disabled);--button-variant-outlined-foreground-disabled:var(--text-primary-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-primary-weak);--button-variant-text-hover:var(--fill-primary-weak-hover);--button-variant-gradient-start:var(--gradient-primary-start);--button-variant-gradient-end:var(--gradient-primary-end);--button-variant-gradient-foreground:var(--gradient-primary-foreground);--button-variant-gradient-disabled:var(--gradient-primary-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-primary-disabled)}:is(.secondary-UqT2AY,.button-secondary){--button-ring-color:var(--ring-secondary);--button-variant-filled:var(--fill-secondary-strong);--button-variant-filled-foreground:var(--text-on-secondary);--button-variant-filled-hover:var(--fill-secondary-strong-hover);--button-variant-filled-disabled:var(--fill-secondary-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-secondary-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-secondary-strong);--button-variant-outlined-hover:var(--fill-secondary-weak);--button-variant-outlined-border:var(--stroke-secondary);--button-variant-outlined-border-disabled:var(--stroke-secondary-disabled);--button-variant-outlined-foreground-disabled:var(--text-secondary-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-secondary-weak);--button-variant-text-hover:var(--fill-secondary-weak-hover);--button-variant-gradient-start:var(--gradient-secondary-start);--button-variant-gradient-end:var(--gradient-secondary-end);--button-variant-gradient-foreground:var(--gradient-secondary-foreground);--button-variant-gradient-disabled:var(--gradient-secondary-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-secondary-disabled)}:is(.noeffect-fpxSgg,.button-noeffect){--button-ring-color:var(--ring-noeffect);--button-variant-filled:var(--fill-noeffect-strong);--button-variant-filled-foreground:var(--text-on-noeffect);--button-variant-filled-hover:var(--fill-noeffect-strong-hover);--button-variant-filled-disabled:var(--fill-noeffect-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-noeffect-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-noeffect-strong);--button-variant-outlined-hover:var(--fill-noeffect-weak);--button-variant-outlined-border:var(--stroke-noeffect);--button-variant-outlined-border-disabled:var(--stroke-noeffect-disabled);--button-variant-outlined-foreground-disabled:var(--text-noeffect-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-noeffect-weak);--button-variant-text-hover:var(--fill-noeffect-weak-hover);--button-variant-gradient-start:var(--gradient-noeffect-start);--button-variant-gradient-end:var(--gradient-noeffect-end);--button-variant-gradient-foreground:var(--gradient-noeffect-foreground);--button-variant-gradient-disabled:var(--gradient-noeffect-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-noeffect-disabled)}:is(.success-fTNDEn,.button-success){--button-ring-color:var(--ring-success);--button-variant-filled:var(--fill-success-strong);--button-variant-filled-foreground:var(--text-on-success);--button-variant-filled-hover:var(--fill-success-strong-hover);--button-variant-filled-disabled:var(--fill-success-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-success-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-success-strong);--button-variant-outlined-hover:var(--fill-success-weak);--button-variant-outlined-border:var(--stroke-success);--button-variant-outlined-border-disabled:var(--stroke-success-disabled);--button-variant-outlined-foreground-disabled:var(--text-success-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-success-weak);--button-variant-text-hover:var(--fill-success-weak-hover);--button-variant-gradient-start:var(--gradient-success-start);--button-variant-gradient-end:var(--gradient-success-end);--button-variant-gradient-foreground:var(--gradient-success-foreground);--button-variant-gradient-disabled:var(--gradient-success-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-success-disabled)}:is(.info-qrdXQD,.button-info){--button-ring-color:var(--ring-info);--button-variant-filled:var(--fill-info-strong);--button-variant-filled-foreground:var(--text-on-info);--button-variant-filled-hover:var(--fill-info-strong-hover);--button-variant-filled-disabled:var(--fill-info-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-info-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-info-strong);--button-variant-outlined-hover:var(--fill-info-weak);--button-variant-outlined-border:var(--stroke-info);--button-variant-outlined-border-disabled:var(--stroke-info-disabled);--button-variant-outlined-foreground-disabled:var(--text-info-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-info-weak);--button-variant-text-hover:var(--fill-info-weak-hover);--button-variant-gradient-start:var(--gradient-info-start);--button-variant-gradient-end:var(--gradient-info-end);--button-variant-gradient-foreground:var(--gradient-info-foreground);--button-variant-gradient-disabled:var(--gradient-info-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-info-disabled)}:is(.warning-a00T3A,.button-warning){--button-ring-color:var(--ring-warning);--button-variant-filled:var(--fill-warning-strong);--button-variant-filled-foreground:var(--text-on-warning);--button-variant-filled-hover:var(--fill-warning-strong-hover);--button-variant-filled-disabled:var(--fill-warning-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-warning-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-warning-strong);--button-variant-outlined-hover:var(--fill-warning-weak);--button-variant-outlined-border:var(--stroke-warning);--button-variant-outlined-border-disabled:var(--stroke-warning-disabled);--button-variant-outlined-foreground-disabled:var(--text-warning-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-warning-weak);--button-variant-text-hover:var(--fill-warning-weak-hover);--button-variant-gradient-start:var(--gradient-warning-start);--button-variant-gradient-end:var(--gradient-warning-end);--button-variant-gradient-foreground:var(--gradient-warning-foreground);--button-variant-gradient-disabled:var(--gradient-warning-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-warning-disabled)}:is(.danger-rwIV_i,.button-danger){--button-ring-color:var(--ring-danger);--button-variant-filled:var(--fill-danger-strong);--button-variant-filled-foreground:var(--text-on-danger);--button-variant-filled-hover:var(--fill-danger-strong-hover);--button-variant-filled-disabled:var(--fill-danger-strong-disabled);--button-variant-filled-foreground-disabled:var(--text-on-danger-disabled);--button-variant-outlined:transparent;--button-variant-outlined-foreground:var(--text-danger-strong);--button-variant-outlined-hover:var(--fill-danger-weak);--button-variant-outlined-border:var(--stroke-danger);--button-variant-outlined-border-disabled:var(--stroke-danger-disabled);--button-variant-outlined-foreground-disabled:var(--text-danger-disabled);--button-variant-text:transparent;--button-variant-text-foreground:var(--text-danger-weak);--button-variant-text-hover:var(--fill-danger-weak-hover);--button-variant-gradient-start:var(--gradient-danger-start);--button-variant-gradient-end:var(--gradient-danger-end);--button-variant-gradient-foreground:var(--gradient-danger-foreground);--button-variant-gradient-disabled:var(--gradient-danger-disabled);--button-variant-gradient-foreground-disabled:var(--text-on-danger-disabled)}:is(.fullWidth-wXvP0v,.button-full-width){width:100%;display:flex}:is(.button-group-uqvOi8,.button-group){place-items:center;gap:var(--gap-2);flex-direction:column;display:flex}@media screen and (width>=40rem){:is(.button-group-uqvOi8,.button-group){flex-direction:row}}:is(.copy-button-container-vCNz8o,.copy-button-container){display:inline-block}:is(.copy-button-oa4bdj svg,.copy-button svg){width:90%;height:90%;display:block}:is(.xs-lZmf78,.copy-button-xs){width:26px;height:26px;min-height:26px;padding:.25rem}:is(.sm-KNN1e5,.copy-button-sm){width:32px;height:32px;min-height:32px;padding:.35rem}:is(.md-OoH0l4,.copy-button-md){width:38px;height:38px;min-height:38px;padding:.45rem}:is(.lg-uu5ujz,.copy-button-lg){width:46px;height:46px;min-height:46px;padding:.55rem}:is(.xl-pFYyrS,.copy-button-xl){width:54px;height:54px;min-height:54px;padding:.65rem}:is(.input-wrapper-xxN94z,.input-wrapper){gap:var(--gap-1);flex-direction:column;display:flex}:is(.input-container-GveKcr,.input-container){align-items:center;gap:var(--gap-2);display:flex;position:relative}:is(.input-voSL1w,.input){gap:var(--gap-2);width:100%;transition:all var(--transition-normal);border-radius:var(--border-radius-sm);border:none;outline:none;align-items:center;font-weight:400;display:inline-flex}:is(.input-voSL1w:focus,.input-voSL1w:active,.input:focus,.input:active){--ring-offset-color:var(--background);--ring-offset-shadow:var(--ring-inset)0 0 0 var(--ring-offset-width)var(--ring-offset-color);--ring-shadow:var(--ring-inset)0 0 0 calc(1px + var(--ring-offset-width))var(--ring-color);box-shadow:var(--ring-offset-shadow),var(--ring-shadow),var(--shadow,0 0 #0000)}:is(.input-voSL1w:disabled,.input-voSL1w[disabled],.input:disabled,.input[disabled]){pointer-events:none}:is(.label-a8k0oS,.input-label){color:var(--label-color);font-size:.875rem;font-weight:500}:is(.sm-cI5ETu,.input-sm){min-height:32px;padding:.25rem .5rem;font-size:.875rem;line-height:0}:is(.md-moqLi4,.input-md){min-height:38px;padding:.4rem .5rem;font-size:1.1rem;line-height:0}:is(.lg-Tn3YZZ,.input-lg){min-height:46px;padding:.5rem;font-size:1.2rem;line-height:0}:is(.start-adornment-H0sdmX,.end-adornment-xl3mid,.input-start-adornment,.input-end-adornment){align-items:center;display:flex;position:absolute}:is(.start-adornment-H0sdmX,.input-start-adornment){left:5px}:is(.end-adornment-xl3mid,.input-end-adornment){right:5px}:is(.help-text-MZW4yX,.input-help-text){color:var(--help-text-color);font-size:.75rem}:is(.outlined-xbB8mE,.input-outlined){border:1px solid var(--input-variant-outlined-border);background-color:#0000}:is(.outlined-xbB8mE:hover,.input-outlined:hover){border:1px solid var(--input-variant-outlined-hover-border)}:is(.outlined-xbB8mE:focus,.outlined-xbB8mE:active,.input-outlined:focus,.input-outlined:active){--ring-color:var(--input-variant-outline-ring-color)}:is(.underlined-zAz2HP,.input-underlined){border-bottom:1px solid var(--input-variant-underlined-border);gap:var(--gap-1);background-color:var(--input-variant-underlined);border-radius:0}.underlined-zAz2HP.sm-cI5ETu,.input-underlined.input-sm{min-height:26px;padding:.25rem .1rem}.underlined-zAz2HP.md-moqLi4,.input-underlined.input-md{min-height:30px;padding:.25rem .1rem}.underlined-zAz2HP.lg-Tn3YZZ,.input-underlined.input-lg{min-height:34px;padding:0 .1rem}:is(.underlined-zAz2HP:hover,.input-underlined:hover){border-bottom:1px solid var(--input-variant-underlined-hover-border)}:is(.filled-M1_LzJ,.input-filled){background-color:var(--input-variant-filled)}:is(.error-n0kSb0,.input-error),:is(.error-n0kSb0:hover,.input-error:hover){border:1px solid var(--red-400)}:is(.error-n0kSb0:focus,.error-n0kSb0:active,.input-error:focus,.input-error:active){--ring-color:var(--red-300)}.underlined-zAz2HP.start-adornment-padding-YAcYOx,.start-adornment-padding-YAcYOx,.input-underlined.input-start-adornment-padding,.input-start-adornment-padding{padding-left:2rem}.underlined-zAz2HP.end-adornment-padding-nC63CK,.end-adornment-padding-nC63CK,.input-underlined.input-end-adornment-padding,.input-end-adornment-padding{padding-right:2rem}.underlined-zAz2HP.start-adornment-H0sdmX,.input-underlined.input-start-adornment{left:0}.underlined-zAz2HP.end-adornment-xl3mid,.input-underlined.input-end-adornment{right:0}:is(.primary-xZZpZI,.input-primary){--input-variant-outlined-border:var(--stroke-primary);--input-variant-outlined-hover-border:var(--stroke-primary-hover);--input-variant-outline-ring-color:var(--ring-primary);--input-variant-underlined-border:var(--stroke-primary);--input-variant-underlined-hover-border:var(--stroke-primary-hover);--input-variant-filled:var(--fill-primary-weak)}:is(.secondary-WWDy2x,.input-secondary){--input-variant-outlined-border:var(--stroke-secondary);--input-variant-outlined-hover-border:var(--stroke-secondary-hover);--input-variant-outline-ring-color:var(--ring-secondary);--input-variant-underlined-border:var(--stroke-secondary);--input-variant-underlined-hover-border:var(--stroke-secondary-hover);--input-variant-filled:var(--fill-secondary-weak)}:is(.noeffect-LHbgak,.input-noeffect){--input-variant-outlined-border:var(--stroke-noeffect);--input-variant-outlined-hover-border:var(--stroke-noeffect-hover);--input-variant-outline-ring-color:var(--ring-noeffect);--input-variant-underlined-border:var(--stroke-noeffect);--input-variant-underlined-hover-border:var(--stroke-noeffect-hover);--input-variant-filled:var(--fill-noeffect-weak)}:is(.success-pMbTwx,.input-success){--input-variant-outlined-border:var(--stroke-success);--input-variant-outlined-hover-border:var(--stroke-success-hover);--input-variant-outline-ring-color:var(--ring-success);--input-variant-underlined-border:var(--stroke-success);--input-variant-underlined-hover-border:var(--stroke-success-hover);--input-variant-filled:var(--fill-success-weak)}:is(.info-SRpUkb,.input-info){--input-variant-outlined-border:var(--stroke-info);--input-variant-outlined-hover-border:var(--stroke-info-hover);--input-variant-outline-ring-color:var(--ring-info);--input-variant-underlined-border:var(--stroke-info);--input-variant-underlined-hover-border:var(--stroke-info-hover);--input-variant-filled:var(--fill-info-weak)}:is(.warning-mHL8O2,.input-warning){--input-variant-outlined-border:var(--stroke-warning);--input-variant-outlined-hover-border:var(--stroke-warning-hover);--input-variant-outline-ring-color:var(--ring-warning);--input-variant-underlined-border:var(--stroke-warning);--input-variant-underlined-hover-border:var(--stroke-warning-hover);--input-variant-filled:var(--fill-warning-weak)}:is(.danger-Rzx3WQ,.input-danger){--input-variant-outlined-border:var(--stroke-danger);--input-variant-outlined-hover-border:var(--stroke-danger-hover);--input-variant-outline-ring-color:var(--ring-danger);--input-variant-underlined-border:var(--stroke-danger);--input-variant-underlined-hover-border:var(--stroke-danger-hover);--input-variant-filled:var(--fill-danger-weak)}:is(.adornment-IbSUaL,.input-adornment){white-space:nowrap;align-items:center;line-height:0;display:flex}:is(.start-hcDqEk,.input-adornment-start){justify-content:flex-start}:is(.end-j0ZhyO,.input-adornment-end){justify-content:flex-end}:is(.text-area-P_aQjC,.text-area){width:100%;padding:.5rem;font-size:1.1rem}:is(.label-Q88hWY,.label){color:var(--text);font-weight:500;display:block}:is(.required-uod5eu,.label-required){color:var(--error)}:is(.text-xJE0DB,.error-text){color:var(--error);font-size:.875rem}:is(.text-U6KD9f,.help-text){color:var(--muted);font-size:.875rem}:is(.section-CEcZOp,.section){width:100%;position:relative}:is(.scroll-to-top-WYqAAl,.scroll-to-top){opacity:0;visibility:hidden;z-index:20;width:0;height:0;color:var(--text-on-primary);background-color:var(--fill-primary-strong);cursor:pointer;border-style:none;outline:none;justify-content:center;align-items:center;margin:0;padding:0;text-decoration:none;transition:all .3s cubic-bezier(.25,.8,.5,1),color 1ms;display:flex;position:fixed;bottom:45px;right:30px}.scroll-to-top-WYqAAl span,.scroll-to-top span{width:18px;padding-bottom:3px}.scroll-to-top-WYqAAl span svg path,.scroll-to-top span svg path{stroke:none;fill:var(--text-on-primary)}.scroll-to-top-WYqAAl:hover,.scroll-to-top-WYqAAl:focus,.scroll-to-top:hover,.scroll-to-top:focus{color:var(--text-on-primary);background-color:var(--fill-primary-strong-hover);transform:translateY(-5px)}:is(.scroll-to-top-shown-Wemu5m,.scroll-to-top-shown){opacity:1;visibility:visible;border-radius:20px;width:40px;min-width:0;height:40px;padding:0;bottom:20px;right:10px}@media screen and (width>=587px){:is(.scroll-to-top-WYqAAl,.scroll-to-top){bottom:45px;right:45px}.scroll-to-top-WYqAAl span,.scroll-to-top span{width:18px}:is(.scroll-to-top-shown-Wemu5m,.scroll-to-top-shown){border-radius:21px;width:42px;height:42px;bottom:22px;right:22px}}}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@infonomic/uikit",
3
3
  "private": false,
4
4
  "license": "MIT",
5
- "version": "5.2.0",
5
+ "version": "5.3.0",
6
6
  "type": "module",
7
7
  "description": "Infonomic UI kit is a collection of reusable UI components and utilities for React and Astro.",
8
8
  "keywords": [
package/src/astro.d.ts CHANGED
@@ -14,6 +14,7 @@ import type InputComponent from './components/forms/input.astro'
14
14
  import type InputAdornmentComponent from './components/forms/input-adornment.astro'
15
15
  import type LabelComponent from './components/forms/label.astro'
16
16
  import type SectionComponent from './components/section/section.astro'
17
+ import type ScrollToTopComponent from './components/scroll-to-top/scroll-to-top.astro'
17
18
  import type CloseIconComponent from './icons/close-icon.astro'
18
19
  import type IconElementComponent from './icons/icon-element.astro'
19
20
  import type LightIconComponent from './icons/light-icon.astro'
@@ -41,3 +42,4 @@ export declare const LightIcon: typeof LightIconComponent
41
42
  export declare const MoonIcon: typeof MoonIconComponent
42
43
  export declare const SearchIcon: typeof SearchIconComponent
43
44
  export declare const Section: typeof SectionComponent
45
+ export declare const ScrollToTop: typeof ScrollToTopComponent
package/src/astro.js CHANGED
@@ -14,12 +14,14 @@ import InputComponent from './components/forms/input.astro'
14
14
  import InputAdornmentComponent from './components/forms/input-adornment.astro'
15
15
  import LabelComponent from './components/forms/label.astro'
16
16
  import SectionComponent from './components/section/section.astro'
17
+ import ScrollToTopComponent from './components/scroll-to-top/scroll-to-top.astro'
17
18
  import CloseIconComponent from './icons/close-icon.astro'
18
19
  import IconElementComponent from './icons/icon-element.astro'
19
20
  import LightIconComponent from './icons/light-icon.astro'
20
21
  import MoonIconComponent from './icons/moon-icon.astro'
21
22
  import SearchIconComponent from './icons/search-icon.astro'
22
23
 
24
+
23
25
  export const Button = ButtonComponent
24
26
  export const Hamburger = HamburgerComponent
25
27
  export const IconButton = IconButtonComponent
@@ -36,6 +38,7 @@ export const InputAdornment = InputAdornmentComponent
36
38
  export const Input = InputComponent
37
39
  export const Label = LabelComponent
38
40
  export const Section = SectionComponent
41
+ export const ScrollToTop = ScrollToTopComponent
39
42
  export const IconElement = IconElementComponent
40
43
  export const LightIcon = LightIconComponent
41
44
  export const MoonIcon = MoonIconComponent
@@ -0,0 +1,75 @@
1
+ ---
2
+ import styles from './scroll-to-top.module.css'
3
+
4
+ interface Props {
5
+ class?: string
6
+ showAt?: number
7
+ offset?: number
8
+ 'aria-label'?: string
9
+ [key: string]: any
10
+ }
11
+
12
+ const {
13
+ class: className,
14
+ showAt = 200,
15
+ offset = -65,
16
+ 'aria-label': ariaLabel = 'Scroll to top',
17
+ ...rest
18
+ } = Astro.props
19
+ ---
20
+
21
+ <button
22
+ type="button"
23
+ aria-label={ariaLabel}
24
+ class:list={['scroll-to-top', styles['scroll-to-top'], className]}
25
+ data-show-at={showAt}
26
+ data-offset={offset}
27
+ data-class-shown={styles['scroll-to-top-shown']}
28
+ {...rest}
29
+ >
30
+ <span aria-hidden="true">
31
+ <svg class="icon" style="fill: currentColor" focusable="false" viewBox="0 0 51 32">
32
+ <path d="M25.4,9.8L45.6,30l4.5-4.5L25.4,0.8L0.8,25.4L5.3,30L25.4,9.8z"></path>
33
+ </svg>
34
+ </span>
35
+ </button>
36
+
37
+ <script>
38
+ const buttons = document.querySelectorAll('button.scroll-to-top')
39
+
40
+ buttons.forEach((button) => {
41
+ if (!(button instanceof HTMLElement)) return
42
+
43
+ const showAt = Number(button.dataset.showAt) || 200
44
+ const offset = Number(button.dataset.offset) || -65
45
+ const classShown = button.dataset.classShown
46
+
47
+ if (classShown == null) return
48
+
49
+ // Click Handler
50
+ button.addEventListener('click', () => {
51
+ window.scrollTo({ top: offset, left: 0, behavior: 'smooth' })
52
+ })
53
+
54
+ // Scroll Handler
55
+ let ticking = false
56
+ const handleOnScroll = () => {
57
+ if (!ticking) {
58
+ window.requestAnimationFrame(() => {
59
+ const shouldShow = window.scrollY > showAt
60
+ if (shouldShow) {
61
+ button.classList.add(classShown)
62
+ button.classList.add('scroll-to-top-shown')
63
+ } else {
64
+ button.classList.remove(classShown)
65
+ button.classList.remove('scroll-to-top-shown')
66
+ }
67
+ ticking = false
68
+ })
69
+ ticking = true
70
+ }
71
+ }
72
+
73
+ window.addEventListener('scroll', handleOnScroll, { passive: true })
74
+ })
75
+ </script>
@@ -1,63 +1,81 @@
1
1
  'use client'
2
2
 
3
- import type React from 'react'
4
3
  import cx from 'classnames'
5
- import { useEffect, useState } from 'react'
4
+ import { type ComponentProps, useEffect, useState } from 'react'
6
5
 
7
- import style from './scroll-to-top.module.css'
6
+ import styles from './scroll-to-top.module.css'
8
7
 
9
- type ScrollToTopIntrinsicProps = React.JSX.IntrinsicElements['button']
10
- interface ScrollToTopProps extends ScrollToTopIntrinsicProps {
8
+ export interface ScrollToTopProps extends ComponentProps<'button'> {
9
+ /**
10
+ * The scroll position (Y-axis) in pixels that triggers the button to appear.
11
+ * @default 200
12
+ */
13
+ showAt?: number
14
+ /**
15
+ * The target scroll position (Y-axis) to scroll to when clicked.
16
+ * @default -65
17
+ */
11
18
  offset?: number
12
19
  }
13
20
 
14
- export type { ScrollToTopProps }
15
-
16
- export const ScrollToTop = function ScrollToTop({
17
- ref,
21
+ export function ScrollToTop({
22
+ className,
23
+ showAt = 200,
18
24
  offset = -65,
19
- ...rest
20
- }: ScrollToTopProps & {
21
- ref?: React.RefObject<HTMLButtonElement>
22
- }) {
25
+ type = 'button',
26
+ 'aria-label': ariaLabel = 'Scroll to top',
27
+ onClick,
28
+ ...props
29
+ }: ScrollToTopProps) {
23
30
  const [show, setShow] = useState(false)
24
31
 
25
- const handleOnClick = (): void => {
32
+ const handleOnClick = (e: React.MouseEvent<HTMLButtonElement>): void => {
26
33
  window.scrollTo({ top: offset, left: 0, behavior: 'smooth' })
34
+ onClick?.(e)
27
35
  }
28
36
 
29
37
  useEffect(() => {
38
+ let ticking = false
39
+
30
40
  const handleOnScroll = (): void => {
31
- const scrollTop = window.scrollY
32
- if (scrollTop > 200) {
33
- setShow(true)
34
- } else {
35
- setShow(false)
41
+ if (!ticking) {
42
+ window.requestAnimationFrame(() => {
43
+ setShow(window.scrollY > showAt)
44
+ ticking = false
45
+ })
46
+ ticking = true
36
47
  }
37
- console.log('scrollTop', scrollTop)
38
- }
39
- if (typeof window !== 'undefined') {
40
- window.addEventListener('scroll', handleOnScroll)
41
48
  }
49
+
50
+ window.addEventListener('scroll', handleOnScroll, { passive: true })
42
51
  return () => {
43
52
  window.removeEventListener('scroll', handleOnScroll)
44
53
  }
45
- }, [])
54
+ }, [showAt])
46
55
 
47
56
  return (
48
57
  <button
49
- ref={ref}
50
- {...rest}
58
+ type={type}
59
+ aria-label={ariaLabel}
51
60
  onClick={handleOnClick}
52
- type="button"
53
- id="scroll-to-top"
54
- className={cx('scroll-to-top', style['scroll-to-top'], {
55
- 'scroll-to-top-shown': show,
56
- [style['scroll-to-top-shown']]: show,
57
- })}
61
+ className={cx(
62
+ 'scroll-to-top',
63
+ styles['scroll-to-top'],
64
+ {
65
+ 'scroll-to-top-shown': show,
66
+ [styles['scroll-to-top-shown']]: show,
67
+ },
68
+ className
69
+ )}
70
+ {...props}
58
71
  >
59
- <span>
60
- <svg className="icon" style={{fill: 'currentColor'}} focusable="false" aria-hidden="true" viewBox="0 0 51 32">
72
+ <span aria-hidden="true">
73
+ <svg
74
+ className="icon"
75
+ style={{ fill: 'currentColor' }}
76
+ focusable="false"
77
+ viewBox="0 0 51 32"
78
+ >
61
79
  <path d="M25.4,9.8L45.6,30l4.5-4.5L25.4,0.8L0.8,25.4L5.3,30L25.4,9.8z" />
62
80
  </svg>
63
81
  </span>
@@ -1,25 +0,0 @@
1
- import type { Meta } from '@storybook/react-vite'
2
-
3
- import { ScrollToTop as ScrollToTopComponent } from './scroll-to-top.js'
4
-
5
- const meta: Meta = {
6
- /* 👇 The title prop is optional.
7
- * See https://storybook.js.org/docs/react/configure/overview#configure-story-loading
8
- * to learn how to generate automatic titles
9
- */
10
- title: 'Components',
11
- component: ScrollToTopComponent,
12
- }
13
-
14
- export default meta
15
-
16
- export const ScrollToTop = (): React.JSX.Element => {
17
- return (
18
- <div>
19
- <div style={{ maxWidth: '600px', height: '160vh', margin: '2rem auto' }}>
20
- <p>Scroll down to see the button appear.</p>
21
- </div>
22
- <ScrollToTopComponent />
23
- </div>
24
- )
25
- }