quirk-ui 0.0.99 → 0.0.101

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_f06du_1{display:flex;flex-direction:column;width:100%}._tabsList_f06du_7{display:flex;border-bottom:2px solid var(--color-border)}._left_f06du_12{justify-content:flex-start}._center_f06du_16{justify-content:center}._right_f06du_20{justify-content:flex-end}._tabsTrigger_f06du_24{padding:var(--spacing-md);border:none;border-bottom:2px solid transparent;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease,border-color .3s ease;position:relative;top:2px}._tabsTrigger_f06du_24._active_f06du_38{border-color:var(--color-primary);color:var(--color-primary)}._tabsPanelWrapper_f06du_43{position:relative;min-height:100px}._tabsPanel_f06du_43{animation:_fadeSlide_f06du_1 .3s ease both;position:absolute;width:100%;top:0;left:0;padding:var(--spacing-md);color:var(--color-text-primary)}@keyframes _fadeSlide_f06du_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
1
+ ._tabs_16efz_1{display:flex;flex-direction:column;width:100%}._tabsList_16efz_7{display:flex;border-bottom:2px solid var(--color-border)}._left_16efz_12{justify-content:flex-start}._center_16efz_16{justify-content:center}._right_16efz_20{justify-content:flex-end}._tabsTrigger_16efz_24{padding:var(--spacing-md);border:none;border-bottom:2px solid transparent;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease,border-color .3s ease;position:relative;top:2px}._tabsTrigger_16efz_24._active_16efz_38{border-color:var(--color-primary);color:var(--color-primary)}._tabsPanelWrapper_16efz_43{position:relative;overflow:hidden;height:auto;transition:height .3s ease-in-out}._tabsPanel_16efz_43{animation:_fadeSlide_16efz_1 .3s ease both;position:relative;width:100%;padding:var(--spacing-md);color:var(--color-text-primary)}@keyframes _fadeSlide_16efz_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@@ -1,89 +1,100 @@
1
- import { jsx as o, jsxs as P } from "react/jsx-runtime";
2
- import d, { useState as m, useId as T, useMemo as $, useRef as y } from "react";
3
- import { TabsContext as L, useTabsContext as u } from "./Context.js";
4
- import '../../assets/index33.css';const x = "_tabs_f06du_1", I = "_tabsList_f06du_7", A = "_left_f06du_12", C = "_center_f06du_16", N = "_right_f06du_20", w = "_tabsTrigger_f06du_24", W = "_active_f06du_38", k = "_tabsPanelWrapper_f06du_43", M = "_tabsPanel_f06du_43", n = {
5
- tabs: x,
6
- tabsList: I,
7
- left: A,
8
- center: C,
9
- right: N,
10
- tabsTrigger: w,
11
- active: W,
12
- tabsPanelWrapper: k,
13
- tabsPanel: M
14
- }, R = {
1
+ import { jsx as b, jsxs as h } from "react/jsx-runtime";
2
+ import z, { useState as x, useId as L, useRef as _, useMemo as w, useEffect as I } from "react";
3
+ import { TabsContext as A, useTabsContext as g } from "./Context.js";
4
+ import '../../assets/index33.css';const R = "_tabs_16efz_1", d = "_tabsList_16efz_7", C = "_left_16efz_12", N = "_center_16efz_16", H = "_right_16efz_20", W = "_tabsTrigger_16efz_24", k = "_active_16efz_38", M = "_tabsPanelWrapper_16efz_43", j = "_tabsPanel_16efz_43", n = {
5
+ tabs: R,
6
+ tabsList: d,
7
+ left: C,
8
+ center: N,
9
+ right: H,
10
+ tabsTrigger: W,
11
+ active: k,
12
+ tabsPanelWrapper: M,
13
+ tabsPanel: j
14
+ }, D = {
15
15
  left: n.left,
16
16
  center: n.center,
17
17
  right: n.right
18
18
  };
19
- function _({
19
+ function v({
20
20
  children: r,
21
- defaultIndex: t = 0,
21
+ defaultIndex: e = 0,
22
22
  align: a = "left"
23
23
  }) {
24
- const [s, f] = m(t), i = T(), c = [], l = [], b = $(
25
- () => ({ activeIndex: s, setActiveIndex: f, idPrefix: i, align: a }),
26
- [s, i, a]
24
+ const [s, f] = x(e), o = L(), p = [], u = [], c = _(null), i = _([]), T = w(
25
+ () => ({ activeIndex: s, setActiveIndex: f, idPrefix: o, align: a, panelRefs: i }),
26
+ [s, o, a]
27
27
  );
28
- return d.Children.forEach(r, (e) => {
29
- var p;
30
- (e == null ? void 0 : e.type) === g ? c.push(e) : ((e == null ? void 0 : e.type) === v || ((p = e == null ? void 0 : e.type) == null ? void 0 : p.name) === "Panel") && l.push(e);
31
- }), /* @__PURE__ */ o(L.Provider, { value: b, children: /* @__PURE__ */ P("div", { className: n.tabs, children: [
32
- c,
33
- /* @__PURE__ */ o("div", { className: n.tabsPanelWrapper, children: l })
28
+ return z.Children.forEach(r, (t) => {
29
+ var l;
30
+ (t == null ? void 0 : t.type) === $ ? p.push(t) : ((t == null ? void 0 : t.type) === y || ((l = t == null ? void 0 : t.type) == null ? void 0 : l.name) === "Panel") && u.push(t);
31
+ }), I(() => {
32
+ const t = c.current, l = i.current[s];
33
+ if (t && l) {
34
+ const P = t.offsetHeight, m = l.offsetHeight;
35
+ P !== m && (t.style.height = `${P}px`, requestAnimationFrame(() => {
36
+ t.style.height = `${m}px`;
37
+ }));
38
+ }
39
+ }, [s]), /* @__PURE__ */ b(A.Provider, { value: T, children: /* @__PURE__ */ h("div", { className: n.tabs, children: [
40
+ p,
41
+ /* @__PURE__ */ b("div", { ref: c, className: n.tabsPanelWrapper, children: u })
34
42
  ] }) });
35
43
  }
36
- function g({ children: r }) {
37
- const { align: t } = u();
38
- return /* @__PURE__ */ o(
44
+ function $({ children: r }) {
45
+ const { align: e } = g();
46
+ return /* @__PURE__ */ b(
39
47
  "div",
40
48
  {
41
- className: `${n.tabsList} ${R[t]}`,
49
+ className: `${n.tabsList} ${D[e]}`,
42
50
  role: "tablist",
43
51
  "aria-label": "Tabs",
44
52
  children: r
45
53
  }
46
54
  );
47
55
  }
48
- function j({ children: r, index: t }) {
49
- const { activeIndex: a, setActiveIndex: s, idPrefix: f } = u(), i = y(null), c = (b) => {
50
- b.key === "ArrowRight" ? s((e) => e + 1) : b.key === "ArrowLeft" && s((e) => Math.max(0, e - 1));
51
- }, l = a === t;
52
- return /* @__PURE__ */ o(
56
+ function E({ children: r, index: e }) {
57
+ const { activeIndex: a, setActiveIndex: s, idPrefix: f } = g(), o = _(null), p = (c) => {
58
+ c.key === "ArrowRight" ? s((i) => i + 1) : c.key === "ArrowLeft" && s((i) => Math.max(0, i - 1));
59
+ }, u = a === e;
60
+ return /* @__PURE__ */ b(
53
61
  "button",
54
62
  {
55
- className: `${n.tabsTrigger} ${l ? n.active : ""}`,
63
+ className: `${n.tabsTrigger} ${u ? n.active : ""}`,
56
64
  role: "tab",
57
- ref: i,
58
- id: `${f}-tab-${t}`,
59
- "aria-selected": a === t,
60
- tabIndex: a === t ? 0 : -1,
61
- onClick: () => s(t),
62
- onKeyDown: c,
65
+ ref: o,
66
+ id: `${f}-tab-${e}`,
67
+ "aria-selected": a === e,
68
+ tabIndex: a === e ? 0 : -1,
69
+ onClick: () => s(e),
70
+ onKeyDown: p,
63
71
  children: r
64
72
  }
65
73
  );
66
74
  }
67
- function v({ children: r, index: t }) {
68
- const { activeIndex: a, idPrefix: s } = u();
69
- return t !== a ? null : /* @__PURE__ */ o(
75
+ function y({ children: r, index: e }) {
76
+ const { activeIndex: a, idPrefix: s, panelRefs: f } = g();
77
+ return e !== a ? null : /* @__PURE__ */ b(
70
78
  "div",
71
79
  {
80
+ ref: (o) => {
81
+ f.current[e] = o;
82
+ },
72
83
  className: n.tabsPanel,
73
84
  role: "tabpanel",
74
- id: `${s}-panel-${t}`,
75
- "aria-labelledby": `${s}-tab-${t}`,
76
- "aria-hidden": a !== t,
77
- hidden: a !== t,
85
+ id: `${s}-panel-${e}`,
86
+ "aria-labelledby": `${s}-tab-${e}`,
87
+ "aria-hidden": a !== e,
88
+ hidden: a !== e,
78
89
  children: r
79
90
  }
80
91
  );
81
92
  }
82
- _.List = g;
83
- _.Trigger = j;
84
- _.Panel = v;
93
+ v.List = $;
94
+ v.Trigger = E;
95
+ v.Panel = y;
85
96
  export {
86
- _ as Tabs,
87
- R as alignClassMap,
88
- _ as default
97
+ v as Tabs,
98
+ D as alignClassMap,
99
+ v as default
89
100
  };
@@ -5,6 +5,7 @@ export type TabsContextType = {
5
5
  setActiveIndex: React.Dispatch<React.SetStateAction<number>>;
6
6
  idPrefix: string;
7
7
  align: Align;
8
+ panelRefs: React.RefObject<(HTMLDivElement | null)[]>;
8
9
  };
9
10
  export declare const TabsContext: React.Context<TabsContextType | null>;
10
11
  export declare function useTabsContext(): TabsContextType;
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_f06du_1{display:flex;flex-direction:column;width:100%}._tabsList_f06du_7{display:flex;border-bottom:2px solid var(--color-border)}._left_f06du_12{justify-content:flex-start}._center_f06du_16{justify-content:center}._right_f06du_20{justify-content:flex-end}._tabsTrigger_f06du_24{padding:var(--spacing-md);border:none;border-bottom:2px solid transparent;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease,border-color .3s ease;position:relative;top:2px}._tabsTrigger_f06du_24._active_f06du_38{border-color:var(--color-primary);color:var(--color-primary)}._tabsPanelWrapper_f06du_43{position:relative;min-height:100px}._tabsPanel_f06du_43{animation:_fadeSlide_f06du_1 .3s ease both;position:absolute;width:100%;top:0;left:0;padding:var(--spacing-md);color:var(--color-text-primary)}@keyframes _fadeSlide_f06du_1{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
33
+ ._tabs_16efz_1{display:flex;flex-direction:column;width:100%}._tabsList_16efz_7{display:flex;border-bottom:2px solid var(--color-border)}._left_16efz_12{justify-content:flex-start}._center_16efz_16{justify-content:center}._right_16efz_20{justify-content:flex-end}._tabsTrigger_16efz_24{padding:var(--spacing-md);border:none;border-bottom:2px solid transparent;background:none;cursor:pointer;color:var(--color-muted);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);transition:color .3s ease,border-color .3s ease;position:relative;top:2px}._tabsTrigger_16efz_24._active_16efz_38{border-color:var(--color-primary);color:var(--color-primary)}._tabsPanelWrapper_16efz_43{position:relative;overflow:hidden;height:auto;transition:height .3s ease-in-out}._tabsPanel_16efz_43{animation:_fadeSlide_16efz_1 .3s ease both;position:relative;width:100%;padding:var(--spacing-md);color:var(--color-text-primary)}@keyframes _fadeSlide_16efz_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.99",
4
+ "version": "0.0.101",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {