quirk-ui 0.0.122 → 0.0.124

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 +1 @@
1
- ._tabs_16zj6_1{display:flex;flex-direction:column;width:100%}._tabsList_16zj6_7{display:flex;width:100%;background-color:var(--color-tab-background);border-radius:var(--radius-md);position:relative}._left_16zj6_16{justify-content:flex-start}._center_16zj6_20{justify-content:center}._right_16zj6_24{justify-content:flex-end}._indicator_16zj6_28{position:absolute;left:0;top:0;height:100%;border-radius:var(--radius-md);transition:transform .3s ease-in-out,width .3s ease-in-out;z-index:0;border:5px solid var(--color-tab-background)}._indicator_16zj6_28:after{content:"";border-radius:var(--radius-md);background-color:var(--color-primary);display:block;position:absolute;width:100%;height:100%}._tabsTrigger_16zj6_50{flex:1;padding:var(--spacing-md);border:none;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease;position:relative;z-index:1;white-space:nowrap}._tabsTrigger_16zj6_50._active_16zj6_67{color:#fff}._tabsPanelWrapper_16zj6_71{position:relative;overflow:hidden;height:auto;transition:height .3s ease-in-out}._tabsPanel_16zj6_71{animation:_fadeSlide_16zj6_1 .3s ease both;position:relative;width:100%;padding:var(--spacing-xl);color:var(--color-text-primary)}@keyframes _fadeSlide_16zj6_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
1
+ ._tabs_on2k6_1{display:flex;flex-direction:column;width:100%}._tabsList_on2k6_7{display:flex;width:100%;background-color:var(--color-tab-background);border-radius:var(--radius-md);position:relative;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}._tabsList_on2k6_7::-webkit-scrollbar{display:none}._left_on2k6_23{justify-content:flex-start}._center_on2k6_27{justify-content:center}._right_on2k6_31{justify-content:flex-end}._indicator_on2k6_35{position:absolute;left:0;top:0;border-radius:var(--radius-md);transition:transform .3s ease-in-out,width .3s ease-in-out;z-index:0;border:5px solid var(--color-tab-background)}._indicator_on2k6_35:after{content:"";border-radius:var(--radius-md);background-color:var(--color-primary);display:block;position:absolute;width:100%;height:100%}._tabsTrigger_on2k6_57{padding:var(--spacing-md);border:none;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease;position:relative;z-index:1;white-space:nowrap;text-align:center;width:100%}._tabsTrigger_on2k6_57._active_on2k6_82{color:#fff}@media (max-width: 767px){._tabsList_on2k6_7{flex-direction:column;overflow-x:visible}._tabsTrigger_on2k6_57{white-space:normal;text-align:left}}._tabsPanelWrapper_on2k6_98{position:relative;overflow:hidden;height:auto;transition:height .3s ease-in-out}._tabsPanel_on2k6_98{animation:_fadeSlide_on2k6_1 .3s ease both;position:relative;width:100%;padding:var(--spacing-xl);color:var(--color-text-primary)}@keyframes _fadeSlide_on2k6_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@@ -1,87 +1,106 @@
1
- import { jsx as _, jsxs as $ } from "react/jsx-runtime";
2
- import I, { useState as j, useId as C, useRef as v, useMemo as A, useLayoutEffect as R } from "react";
3
- import { TabsContext as N, useTabsContext as m } from "./Context.js";
4
- import '../../assets/index33.css';const H = "_tabs_16zj6_1", S = "_tabsList_16zj6_7", W = "_left_16zj6_16", k = "_center_16zj6_20", E = "_right_16zj6_24", M = "_indicator_16zj6_28", B = "_tabsTrigger_16zj6_50", D = "_active_16zj6_67", K = "_tabsPanelWrapper_16zj6_71", O = "_tabsPanel_16zj6_71", r = {
5
- tabs: H,
6
- tabsList: S,
7
- left: W,
8
- center: k,
9
- right: E,
10
- indicator: M,
11
- tabsTrigger: B,
12
- active: D,
13
- tabsPanelWrapper: K,
14
- tabsPanel: O
15
- }, X = {
16
- left: r.left,
17
- center: r.center,
18
- right: r.right
1
+ import { jsx as d, jsxs as I } from "react/jsx-runtime";
2
+ import N, { useState as T, useId as M, useRef as w, useMemo as W, useLayoutEffect as x, useEffect as H } from "react";
3
+ import { TabsContext as S, useTabsContext as m } from "./Context.js";
4
+ import '../../assets/index33.css';const z = "_tabs_on2k6_1", j = "_tabsList_on2k6_7", B = "_left_on2k6_23", D = "_center_on2k6_27", K = "_right_on2k6_31", O = "_indicator_on2k6_35", X = "_tabsTrigger_on2k6_57", Y = "_active_on2k6_82", q = "_tabsPanelWrapper_on2k6_98", F = "_tabsPanel_on2k6_98", a = {
5
+ tabs: z,
6
+ tabsList: j,
7
+ left: B,
8
+ center: D,
9
+ right: K,
10
+ indicator: O,
11
+ tabsTrigger: X,
12
+ active: Y,
13
+ tabsPanelWrapper: q,
14
+ tabsPanel: F
15
+ }, G = {
16
+ left: a.left,
17
+ center: a.center,
18
+ right: a.right
19
19
  };
20
- function P({
20
+ function y({
21
21
  children: i,
22
22
  defaultIndex: e = 0,
23
23
  align: n = "left"
24
24
  }) {
25
- const [s, f] = j(e), [o, b] = j({ width: 0, left: 0 }), p = C(), c = [], l = [], y = v(null), h = v([]), w = v([]), x = A(
25
+ const [s, p] = T(e), [o, f] = T({
26
+ width: 0,
27
+ left: 0,
28
+ top: 0,
29
+ height: 0
30
+ }), _ = typeof window < "u", b = _ ? x : H, g = M(), P = [], k = [], $ = w(null), L = w([]), R = w([]), A = W(
26
31
  () => ({
27
32
  activeIndex: s,
28
- setActiveIndex: f,
29
- idPrefix: p,
33
+ setActiveIndex: p,
34
+ idPrefix: g,
30
35
  align: n,
31
- panelRefs: h,
32
- triggerRefs: w,
36
+ panelRefs: L,
37
+ triggerRefs: R,
33
38
  indicatorStyle: o
34
39
  }),
35
- [s, p, n, o]
40
+ [s, g, n, o]
36
41
  );
37
- return I.Children.forEach(i, (t) => {
38
- var a;
39
- (t == null ? void 0 : t.type) === z ? c.push(t) : ((t == null ? void 0 : t.type) === T || ((a = t == null ? void 0 : t.type) == null ? void 0 : a.name) === "Panel") && l.push(t);
40
- }), R(() => {
41
- var a;
42
- const t = w.current[s];
43
- if (t) {
44
- const g = t.getBoundingClientRect(), u = (a = t.parentElement) == null ? void 0 : a.getBoundingClientRect();
45
- if (!u) return;
46
- const d = g.left - u.left, L = g.width;
47
- b({
48
- width: L,
49
- left: d
50
- });
51
- }
52
- }, [s]), R(() => {
53
- const t = y.current, a = h.current[s];
54
- if (!t || !a) return;
55
- const g = () => {
56
- const d = a.offsetHeight;
57
- t.offsetHeight, t.style.height = `${d}px`;
42
+ return N.Children.forEach(i, (t) => {
43
+ var r;
44
+ (t == null ? void 0 : t.type) === C ? P.push(t) : ((t == null ? void 0 : t.type) === E || ((r = t == null ? void 0 : t.type) == null ? void 0 : r.name) === "Panel") && k.push(t);
45
+ }), b(() => {
46
+ const t = () => {
47
+ var u;
48
+ const r = R.current[s];
49
+ if (r) {
50
+ const c = r.getBoundingClientRect(), l = (u = r.parentElement) == null ? void 0 : u.getBoundingClientRect();
51
+ if (!l) return;
52
+ if (window.innerWidth < 768) {
53
+ const h = c.top - l.top, v = c.height;
54
+ f({ top: h, height: v, left: 0, width: l.width });
55
+ } else {
56
+ const h = c.left - l.left, v = c.width;
57
+ f({
58
+ left: h,
59
+ width: v,
60
+ top: 0,
61
+ height: l.height
62
+ });
63
+ }
64
+ }
65
+ };
66
+ if (_)
67
+ return t(), window.addEventListener("resize", t), () => {
68
+ window.removeEventListener("resize", t);
69
+ };
70
+ }, [s]), x(() => {
71
+ const t = $.current, r = L.current[s];
72
+ if (!t || !r) return;
73
+ const u = () => {
74
+ const l = r.offsetHeight;
75
+ t.offsetHeight, t.style.height = `${l}px`;
58
76
  };
59
- g();
60
- const u = new ResizeObserver(g);
61
- return u.observe(a), () => {
62
- u.disconnect();
77
+ u();
78
+ const c = new ResizeObserver(u);
79
+ return c.observe(r), () => {
80
+ c.disconnect();
63
81
  };
64
- }, [s]), /* @__PURE__ */ _(N.Provider, { value: x, children: /* @__PURE__ */ $("div", { className: r.tabs, children: [
65
- c,
66
- /* @__PURE__ */ _("div", { ref: y, className: r.tabsPanelWrapper, children: l })
82
+ }, [s]), /* @__PURE__ */ d(S.Provider, { value: A, children: /* @__PURE__ */ I("div", { className: a.tabs, children: [
83
+ P,
84
+ /* @__PURE__ */ d("div", { ref: $, className: a.tabsPanelWrapper, children: k })
67
85
  ] }) });
68
86
  }
69
- function z({ children: i }) {
87
+ function C({ children: i }) {
70
88
  const { align: e, indicatorStyle: n } = m();
71
- return /* @__PURE__ */ $(
89
+ return /* @__PURE__ */ I(
72
90
  "div",
73
91
  {
74
- className: `${r.tabsList} ${X[e]}`,
92
+ className: `${a.tabsList} ${G[e]}`,
75
93
  role: "tablist",
76
94
  "aria-label": "Tabs",
77
95
  children: [
78
- /* @__PURE__ */ _(
96
+ /* @__PURE__ */ d(
79
97
  "div",
80
98
  {
81
- className: r.indicator,
99
+ className: a.indicator,
82
100
  style: {
83
101
  width: n.width,
84
- transform: `translateX(${n.left}px)`
102
+ height: n.height,
103
+ transform: `translateX(${n.left}px) translateY(${n.top}px)`
85
104
  }
86
105
  }
87
106
  ),
@@ -90,36 +109,36 @@ function z({ children: i }) {
90
109
  }
91
110
  );
92
111
  }
93
- function q({ children: i, index: e }) {
94
- const { activeIndex: n, setActiveIndex: s, idPrefix: f, triggerRefs: o } = m(), b = (c) => {
95
- c.key === "ArrowRight" ? s((l) => l + 1) : c.key === "ArrowLeft" && s((l) => Math.max(0, l - 1));
96
- }, p = n === e;
97
- return /* @__PURE__ */ _(
112
+ function J({ children: i, index: e }) {
113
+ const { activeIndex: n, setActiveIndex: s, idPrefix: p, triggerRefs: o } = m(), f = (b) => {
114
+ b.key === "ArrowRight" ? s((g) => g + 1) : b.key === "ArrowLeft" && s((g) => Math.max(0, g - 1));
115
+ }, _ = n === e;
116
+ return /* @__PURE__ */ d(
98
117
  "button",
99
118
  {
100
- className: `${r.tabsTrigger} ${p ? r.active : ""}`,
119
+ className: `${a.tabsTrigger} ${_ ? a.active : ""}`,
101
120
  role: "tab",
102
- ref: (c) => {
103
- o.current[e] = c;
121
+ ref: (b) => {
122
+ o.current[e] = b;
104
123
  },
105
- id: `${f}-tab-${e}`,
124
+ id: `${p}-tab-${e}`,
106
125
  "aria-selected": n === e,
107
126
  tabIndex: n === e ? 0 : -1,
108
127
  onClick: () => s(e),
109
- onKeyDown: b,
128
+ onKeyDown: f,
110
129
  children: i
111
130
  }
112
131
  );
113
132
  }
114
- function T({ children: i, index: e }) {
115
- const { activeIndex: n, idPrefix: s, panelRefs: f } = m(), o = e === n;
116
- return /* @__PURE__ */ _(
133
+ function E({ children: i, index: e }) {
134
+ const { activeIndex: n, idPrefix: s, panelRefs: p } = m(), o = e === n;
135
+ return /* @__PURE__ */ d(
117
136
  "div",
118
137
  {
119
- ref: (b) => {
120
- f.current[e] = b;
138
+ ref: (f) => {
139
+ p.current[e] = f;
121
140
  },
122
- className: r.tabsPanel,
141
+ className: a.tabsPanel,
123
142
  role: "tabpanel",
124
143
  id: `${s}-panel-${e}`,
125
144
  "aria-labelledby": `${s}-tab-${e}`,
@@ -129,11 +148,11 @@ function T({ children: i, index: e }) {
129
148
  }
130
149
  );
131
150
  }
132
- P.List = z;
133
- P.Trigger = q;
134
- P.Panel = T;
151
+ y.List = C;
152
+ y.Trigger = J;
153
+ y.Panel = E;
135
154
  export {
136
- P as Tabs,
137
- X as alignClassMap,
138
- P as default
155
+ y as Tabs,
156
+ G as alignClassMap,
157
+ y as default
139
158
  };
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- type NavItem = {
2
+ export type NavItem = {
3
3
  label: string;
4
4
  href?: string;
5
5
  sublinks?: NavItem[];
@@ -3,6 +3,8 @@ import { Align } from '.';
3
3
  export type IndicatorStyle = {
4
4
  width: number;
5
5
  left: number;
6
+ top: number;
7
+ height: number;
6
8
  };
7
9
  export type TabsContextType = {
8
10
  activeIndex: number;
package/dist/styles.css CHANGED
@@ -30,7 +30,7 @@ ul._list_4w9h5_1{list-style-type:none;padding:0;margin:0}ol._list_4w9h5_1{list-s
30
30
  ._progressBarContainer_a1m8u_1{display:flex;align-items:center;justify-content:center;gap:.25rem;width:100%}._progressBar_a1m8u_1{flex:1;height:12px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;position:relative}._fill_a1m8u_18{height:100%;transition:width .3s ease;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;border-radius:4px}._primary_a1m8u_29 ._fill_a1m8u_18{background-color:var(--color-primary)}._success_a1m8u_33 ._fill_a1m8u_18{background-color:var(--color-success)}._warning_a1m8u_37 ._fill_a1m8u_18{background-color:var(--color-warning)}._danger_a1m8u_41 ._fill_a1m8u_18{background-color:var(--color-error)}._label_a1m8u_45{flex:.1;position:relative;width:auto;text-align:center;color:var(--color-text-primary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold)}
31
31
  ._carousel_1e9ij_1{width:100%}@media (max-width: 767px){._carousel_1e9ij_1{padding:0 var(--spacing-lg)}}._noPointerEvents_1e9ij_9 *{pointer-events:none!important}._trackContainer_1e9ij_13{overflow:hidden;width:100%}@media (max-width: 767px){._trackContainer_1e9ij_13{overflow:visible}}._track_1e9ij_13{display:flex;transition:transform .3s ease;will-change:transform}._page_1e9ij_28{display:flex;gap:var(--spacing-md);padding:0 var(--spacing-sm)}._controls_1e9ij_34{display:flex;justify-content:space-between;align-items:center;margin-top:var(--spacing-md);margin-left:auto;margin-right:auto;padding:0 var(--spacing-md);width:100%}._indicators_1e9ij_45{display:flex;flex-wrap:wrap;max-width:125px;gap:var(--spacing-xs)}._indicator_1e9ij_45{width:10px;height:10px;border-radius:50%;background-color:#e0e0e0;border:1px solid #fff;cursor:pointer;transition:background-color .3s}._indicator_1e9ij_45._active_1e9ij_62{background-color:var(--color-primary)}._buttons_1e9ij_66{display:flex;gap:var(--spacing-md)}._prev_1e9ij_71._disabled_1e9ij_71,._next_1e9ij_72._disabled_1e9ij_71{opacity:.5;pointer-events:none}._buttons_1e9ij_66 button:not(._disabled_1e9ij_71):hover{background-color:var(--color-primary);color:#fff}._prev_1e9ij_71,._next_1e9ij_72{background-color:#e0e0e0;color:var(--color-text-primary);border:1px solid #fff;padding:var(--spacing-sm);cursor:pointer;transition:background-color .3s,color .3s;border-radius:50%;width:40px;height:40px;display:flex;justify-content:center;align-items:center}
32
32
  ._drawer_55xty_1{position:fixed;background-color:var(--color-background);transition:transform .3s ease-in-out;z-index:1000;width:300px;height:100%;box-shadow:0 0 10px #00000026;padding:var(--spacing-md)}._right_55xty_12{top:0;right:0;transform:translate(100%)}._left_55xty_18{top:0;left:0;transform:translate(-100%)}._top_55xty_24{top:0;left:0;width:100%;height:auto;transform:translateY(-100%)}._bottom_55xty_32{bottom:0;left:0;width:100%;height:auto;transform:translateY(100%)}._open_55xty_40._right_55xty_12,._open_55xty_40._left_55xty_18{transform:translate(0)}._open_55xty_40._top_55xty_24,._open_55xty_40._bottom_55xty_32{transform:translateY(0)}._overlay_55xty_50{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0000004d;opacity:0;pointer-events:none;transition:opacity .3s ease-in-out;z-index:999}._overlay_55xty_50._show_55xty_60{opacity:1;pointer-events:all}
33
- ._tabs_16zj6_1{display:flex;flex-direction:column;width:100%}._tabsList_16zj6_7{display:flex;width:100%;background-color:var(--color-tab-background);border-radius:var(--radius-md);position:relative}._left_16zj6_16{justify-content:flex-start}._center_16zj6_20{justify-content:center}._right_16zj6_24{justify-content:flex-end}._indicator_16zj6_28{position:absolute;left:0;top:0;height:100%;border-radius:var(--radius-md);transition:transform .3s ease-in-out,width .3s ease-in-out;z-index:0;border:5px solid var(--color-tab-background)}._indicator_16zj6_28:after{content:"";border-radius:var(--radius-md);background-color:var(--color-primary);display:block;position:absolute;width:100%;height:100%}._tabsTrigger_16zj6_50{flex:1;padding:var(--spacing-md);border:none;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease;position:relative;z-index:1;white-space:nowrap}._tabsTrigger_16zj6_50._active_16zj6_67{color:#fff}._tabsPanelWrapper_16zj6_71{position:relative;overflow:hidden;height:auto;transition:height .3s ease-in-out}._tabsPanel_16zj6_71{animation:_fadeSlide_16zj6_1 .3s ease both;position:relative;width:100%;padding:var(--spacing-xl);color:var(--color-text-primary)}@keyframes _fadeSlide_16zj6_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
33
+ ._tabs_on2k6_1{display:flex;flex-direction:column;width:100%}._tabsList_on2k6_7{display:flex;width:100%;background-color:var(--color-tab-background);border-radius:var(--radius-md);position:relative;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}._tabsList_on2k6_7::-webkit-scrollbar{display:none}._left_on2k6_23{justify-content:flex-start}._center_on2k6_27{justify-content:center}._right_on2k6_31{justify-content:flex-end}._indicator_on2k6_35{position:absolute;left:0;top:0;border-radius:var(--radius-md);transition:transform .3s ease-in-out,width .3s ease-in-out;z-index:0;border:5px solid var(--color-tab-background)}._indicator_on2k6_35:after{content:"";border-radius:var(--radius-md);background-color:var(--color-primary);display:block;position:absolute;width:100%;height:100%}._tabsTrigger_on2k6_57{padding:var(--spacing-md);border:none;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease;position:relative;z-index:1;white-space:nowrap;text-align:center;width:100%}._tabsTrigger_on2k6_57._active_on2k6_82{color:#fff}@media (max-width: 767px){._tabsList_on2k6_7{flex-direction:column;overflow-x:visible}._tabsTrigger_on2k6_57{white-space:normal;text-align:left}}._tabsPanelWrapper_on2k6_98{position:relative;overflow:hidden;height:auto;transition:height .3s ease-in-out}._tabsPanel_on2k6_98{animation:_fadeSlide_on2k6_1 .3s ease both;position:relative;width:100%;padding:var(--spacing-xl);color:var(--color-text-primary)}@keyframes _fadeSlide_on2k6_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
34
34
  ._breadcrumbs_1nbgu_1{display:block;font-size:var(--font-size-sm);line-height:1.5}._list_1nbgu_7{display:flex;flex-wrap:wrap;list-style:none;padding:0;margin:0}._item_1nbgu_15{display:flex;align-items:center}._separator_1nbgu_20{margin:0 var(--spacing-xs);color:var(--color-muted)}._link_1nbgu_25{color:var(--color-muted);text-decoration:none;transition:color .3s ease}._link_1nbgu_25:hover{color:var(--color-primary)}._label_1nbgu_35{color:var(--color-muted)}._active_1nbgu_39{font-weight:var(--font-weight-bold);color:var(--color-primary)}
35
35
  ._footer_gfid4_1{background-color:var(--color-background);padding:var(--spacing-xl) var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-primary)}._container_gfid4_8{display:flex;flex-direction:column;gap:var(--spacing-xl)}._logo_gfid4_16{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-primary)}._groups_gfid4_22{display:flex;flex-wrap:wrap;gap:var(--spacing-xl)}._group_gfid4_22{min-width:140px}._groupTitle_gfid4_32{font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-xs)}._sublinks_gfid4_37{position:relative}._linkList_gfid4_41{display:flex;flex-direction:column;gap:var(--spacing-xs);list-style:none;padding:0;margin:0}._link_gfid4_41{color:var(--color-text-primary);text-decoration:none;display:block}._link_gfid4_41:hover{color:var(--color-primary)}._bottom_gfid4_60{margin-top:var(--spacing-xl);text-align:right;font-size:var(--font-size-sm);color:var(--color-muted)}
36
36
  ._form_s0yvj_1{display:flex;flex-direction:column;gap:var(--spacing-md)}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "quirk-ui",
3
3
  "private": false,
4
- "version": "0.0.122",
4
+ "version": "0.0.124",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {