@clubmed/trident-ui 1.3.0-beta.11 → 1.3.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.npm/_logs/2025-08-08T15_19_22_167Z-debug-0.log +19 -0
  2. package/.npm/_logs/2025-08-08T15_19_22_257Z-debug-0.log +14 -0
  3. package/CHANGELOG.md +15 -0
  4. package/README.md +8 -0
  5. package/assets/icons/ResortFill/PHUC_Fill.svg +287 -10
  6. package/assets/icons/ResortFill/TOMC_Fill.svg +199 -14
  7. package/assets/icons/ResortFill-EC/KIPC_EC_Fill.svg +499 -0
  8. package/assets/icons/ResortOutline/PHUC_Outline.svg +156 -6
  9. package/assets/icons/ResortOutline/TOMC_Outline.svg +99 -6
  10. package/assets/icons/ResortOutline-EC/KIPC_EC_Outline.svg +380 -0
  11. package/assets/icons/Transports/Taxi.svg +5 -0
  12. package/assets/icons/Utilities/Doorhanger.svg +5 -0
  13. package/assets/{style.css → trident-ui.css} +1 -1
  14. package/atoms/Clickable/Clickable.d.ts +2 -2
  15. package/atoms/Heading/Heading.d.ts +1 -1
  16. package/atoms/Heading/HeadingGroup.d.ts +2 -2
  17. package/atoms/Icons/Iconics.d.ts +1 -1
  18. package/atoms/Icons/IconsResolver.d.ts +1 -1
  19. package/atoms/Icons/contexts/IconsContext.d.ts +1 -1
  20. package/atoms/Icons/svg/SvgIcon.d.ts +1 -1
  21. package/atoms/Icons/svg-use/SvgUseIcon.d.ts +1 -1
  22. package/atoms/Image/Image.d.ts +1 -1
  23. package/atoms/Image/Image.js +12 -12
  24. package/atoms/Image/Image.js.map +1 -1
  25. package/atoms/Prose/Prose.d.ts +2 -2
  26. package/chunks/ResizeObserver.js +1 -1
  27. package/chunks/ResizeObserver.js.map +1 -1
  28. package/chunks/_commonjsHelpers.js +19 -14
  29. package/chunks/_commonjsHelpers.js.map +1 -1
  30. package/chunks/index.js +36 -33
  31. package/chunks/index.js.map +1 -1
  32. package/chunks/plugin.js +57 -46
  33. package/chunks/plugin.js.map +1 -1
  34. package/contexts/Devices/Device.d.ts +3 -3
  35. package/contexts/Devices/hooks/useQueries.d.ts +2 -2
  36. package/contexts/Devices/reducers/reducer.d.ts +2 -2
  37. package/contexts/TridentUIConfig.d.ts +1 -1
  38. package/contexts/TridentUIConfig.js +1265 -653
  39. package/contexts/TridentUIConfig.js.map +1 -1
  40. package/helpers/colors/colors.d.ts +1 -1
  41. package/hooks/useKeyboardControls.d.ts +1 -1
  42. package/hooks/useResizeObserver.d.ts +1 -1
  43. package/hooks/useSafeBoop.d.ts +2 -2
  44. package/molecules/Arrows/Arrows.d.ts +2 -2
  45. package/molecules/Avatar.d.ts +1 -1
  46. package/molecules/Avatar.js +24 -24
  47. package/molecules/Avatar.js.map +1 -1
  48. package/molecules/Backdrop.d.ts +1 -1
  49. package/molecules/Breadcrumb.d.ts +7 -11
  50. package/molecules/Breadcrumb.js +44 -36
  51. package/molecules/Breadcrumb.js.map +1 -1
  52. package/molecules/Breadcrumb.themes.d.ts +8 -0
  53. package/molecules/Breadcrumb.themes.js +15 -0
  54. package/molecules/Breadcrumb.themes.js.map +1 -0
  55. package/molecules/Buttons/ArrowButton.d.ts +1 -1
  56. package/molecules/Buttons/Button.d.ts +3 -3
  57. package/molecules/Buttons/ButtonAnchor.d.ts +2 -2
  58. package/molecules/Buttons/ButtonContent.d.ts +2 -2
  59. package/molecules/Buttons/FakeButton.d.ts +2 -3
  60. package/molecules/Buttons/InertButton.d.ts +2 -2
  61. package/molecules/Buttons/v2/Button.d.ts +2081 -2082
  62. package/molecules/Buttons/v2/Button.type.d.ts +2 -2
  63. package/molecules/Cards/Card.d.ts +4 -4
  64. package/molecules/Cards/CardBackground.d.ts +2 -2
  65. package/molecules/Cards/CardBackground.js +17 -17
  66. package/molecules/Cards/CardBackground.js.map +1 -1
  67. package/molecules/Cards/CardBackgroundContext.d.ts +1 -1
  68. package/molecules/Cards/CardClickable.d.ts +1 -1
  69. package/molecules/Cards/ExpandableCard.d.ts +3 -3
  70. package/molecules/Cards/ExpandableCard.js +41 -41
  71. package/molecules/Cards/ExpandableCard.js.map +1 -1
  72. package/molecules/Cards/v2/Card.d.ts +1 -1
  73. package/molecules/Cards/v2/Card.js +13 -13
  74. package/molecules/Cards/v2/Card.js.map +1 -1
  75. package/molecules/Chip.d.ts +3 -3
  76. package/molecules/Chip.themes.d.ts +1 -1
  77. package/molecules/ElasticHeight.d.ts +1 -1
  78. package/molecules/ElasticHeight.js +20 -21
  79. package/molecules/ElasticHeight.js.map +1 -1
  80. package/molecules/Forms/Checkboxes/Checkbox.d.ts +1 -1
  81. package/molecules/Forms/Checkboxes/Checkbox.js +43 -43
  82. package/molecules/Forms/Checkboxes/Checkbox.js.map +1 -1
  83. package/molecules/Forms/Checkboxes/Checkboxes.d.ts +2 -2
  84. package/molecules/Forms/DateField.d.ts +2 -2
  85. package/molecules/Forms/DateField.js +60 -61
  86. package/molecules/Forms/DateField.js.map +1 -1
  87. package/molecules/Forms/Filter.d.ts +1 -2
  88. package/molecules/Forms/Filter.js +29 -29
  89. package/molecules/Forms/Filter.js.map +1 -1
  90. package/molecules/Forms/FormControl.d.ts +4 -4
  91. package/molecules/Forms/FormLabel.d.ts +1 -1
  92. package/molecules/Forms/NumberField.d.ts +278 -278
  93. package/molecules/Forms/Password/Password.d.ts +1 -1
  94. package/molecules/Forms/Password/ValidationMessage.d.ts +1 -1
  95. package/molecules/Forms/Radios/Radio.d.ts +1 -2
  96. package/molecules/Forms/Radios/Radio.js +30 -30
  97. package/molecules/Forms/Radios/Radio.js.map +1 -1
  98. package/molecules/Forms/Radios/RadioGroup.d.ts +2 -2
  99. package/molecules/Forms/Radios/RadioGroup.js +50 -52
  100. package/molecules/Forms/Radios/RadioGroup.js.map +1 -1
  101. package/molecules/Forms/Range.d.ts +1 -2
  102. package/molecules/Forms/Range.js +118 -113
  103. package/molecules/Forms/Range.js.map +1 -1
  104. package/molecules/Forms/Select.d.ts +3 -3
  105. package/molecules/Forms/Switch.d.ts +1 -1
  106. package/molecules/Forms/TextField.d.ts +3 -3
  107. package/molecules/HamburgerIcon.d.ts +1 -1
  108. package/molecules/Link.d.ts +2 -2
  109. package/molecules/Loader.d.ts +1 -1
  110. package/molecules/Pagination.d.ts +2 -2
  111. package/molecules/Popin.d.ts +1 -1
  112. package/molecules/Spinner.d.ts +1 -1
  113. package/molecules/Tabs/Tab.d.ts +2 -3
  114. package/molecules/Tabs/Tab.js +41 -42
  115. package/molecules/Tabs/Tab.js.map +1 -1
  116. package/molecules/Tabs/TabList.d.ts +1 -1
  117. package/molecules/Tabs/TabList.js +21 -21
  118. package/molecules/Tabs/TabList.js.map +1 -1
  119. package/molecules/Tabs/TabPanel.d.ts +1 -1
  120. package/molecules/Tabs/TabPanel.js +13 -13
  121. package/molecules/Tabs/TabPanel.js.map +1 -1
  122. package/molecules/Tabs/Tabs.d.ts +1 -1
  123. package/molecules/Tabs/TabsBody.d.ts +1 -1
  124. package/molecules/Tabs/context/TabControl.d.ts +2 -2
  125. package/molecules/Tabs/hooks/tabControl.d.ts +5 -5
  126. package/molecules/Tag.d.ts +4 -4
  127. package/package.json +34 -36
  128. package/tailwind/plugins/animationDelay.d.ts +2 -2
  129. package/tailwind/plugins/hocus.d.ts +2 -2
  130. package/tailwind/plugins/lineClampFix.d.ts +2 -2
  131. package/tailwind/plugins/popover.d.ts +2 -2
  132. package/tailwind/plugins/startingStyle.d.ts +2 -2
  133. package/tailwind/plugins/transitionBehavior.d.ts +2 -2
  134. package/tailwind/tailwind.preset.d.ts +50 -50
  135. package/tests/helpers/device.d.ts +14 -0
  136. package/tests/helpers/device.js +13426 -0
  137. package/tests/helpers/device.js.map +1 -0
  138. package/assets/icons/ResortFill/KIPC_Fill.svg +0 -12
  139. package/assets/icons/ResortOutline/KIPC_Outline.svg +0 -7
@@ -1,31 +1,30 @@
1
1
  "use client";
2
- import { jsx as d, jsxs as j } from "react/jsx-runtime";
3
- import { c as u } from "../../chunks/index.js";
4
- import { useRef as m, useEffect as B, useCallback as r } from "react";
5
- import { animated as I } from "@react-spring/web";
6
- import { useActiveTab as P, useTabsUid as U, useRegisterTabControl as z } from "./hooks/tabControl.js";
7
- import { getTheme as G } from "./theme.js";
8
- import { useSafeBoop as M } from "../../hooks/useSafeBoop.js";
9
- import { useKeyboardControls as O } from "../../hooks/useKeyboardControls.js";
2
+ import { jsx as p, jsxs as D } from "react/jsx-runtime";
3
+ import { c as d } from "../../chunks/index.js";
4
+ import { useRef as u, useEffect as j, useCallback as r } from "react";
5
+ import { animated as B } from "@react-spring/web";
6
+ import { useActiveTab as I, useTabsUid as P, useRegisterTabControl as U } from "./hooks/tabControl.js";
7
+ import { getTheme as z } from "./theme.js";
8
+ import { useSafeBoop as G } from "../../hooks/useSafeBoop.js";
9
+ import { useKeyboardControls as M } from "../../hooks/useKeyboardControls.js";
10
10
  const f = "-z-1 rounded-pill absolute inset-0 duration-300", X = ({
11
11
  className: y,
12
- label: a,
12
+ label: c,
13
13
  children: g,
14
- value: o,
15
- onSelect: i,
14
+ value: e,
15
+ onSelect: m,
16
16
  as: T = "h2",
17
17
  theme: h = "yellow"
18
18
  }) => {
19
- const p = m(null), e = P(), b = U(), t = z({ value: o, ref: p }), l = m(e), n = m(e === o);
20
- n.current = e === o;
21
- const x = { "--tab-index": o }, { textColor: C, textColorActive: w, bgColor: A } = G(h), [N, c] = M({ scale: 1.02 });
22
- B(() => {
23
- var s;
24
- l.current !== e && o === e && ((s = p.current) == null || s.focus(), i == null || i({ value: o, label: a })), l.current !== e && (l.current = e);
25
- }, [a, o, i, e]);
19
+ const i = u(null), o = I(), b = P(), t = U({ value: e, ref: i }), a = u(o), n = u(o === e);
20
+ n.current = o === e;
21
+ const x = { "--tab-index": e }, { textColor: C, textColorActive: w, bgColor: A } = z(h), [N, s] = G({ scale: 1.02 });
22
+ j(() => {
23
+ a.current !== o && e === o && (i.current?.focus(), m?.({ value: e, label: c })), a.current !== o && (a.current = o);
24
+ }, [c, e, m, o]);
26
25
  const _ = r(() => {
27
- n.current && c();
28
- }, [c]), k = r(() => {
26
+ n.current && s();
27
+ }, [s]), k = r(() => {
29
28
  t({ type: "start" });
30
29
  }, [t]), L = r(() => {
31
30
  t({ type: "end" });
@@ -34,12 +33,12 @@ const f = "-z-1 rounded-pill absolute inset-0 duration-300", X = ({
34
33
  }, [t]), v = r(() => {
35
34
  t({ type: "next" });
36
35
  }, [t]), E = r(() => {
37
- const s = document.documentElement.dir === "rtl";
38
- t({ type: s ? "next" : "previous" });
36
+ const l = document.documentElement.dir === "rtl";
37
+ t({ type: l ? "next" : "previous" });
39
38
  }, [t]), K = r(() => {
40
- const s = document.documentElement.dir === "rtl";
41
- t({ type: s ? "previous" : "next" });
42
- }, [t]), $ = O({
39
+ const l = document.documentElement.dir === "rtl";
40
+ t({ type: l ? "previous" : "next" });
41
+ }, [t]), S = M({
43
42
  activate: _,
44
43
  start: k,
45
44
  end: L,
@@ -47,21 +46,21 @@ const f = "-z-1 rounded-pill absolute inset-0 duration-300", X = ({
47
46
  down: v,
48
47
  left: E,
49
48
  right: K
50
- }), D = r(() => {
51
- t({ type: "update", payload: o }), n.current && c();
52
- }, [c, t, o]);
53
- return /* @__PURE__ */ d(
54
- I.div,
49
+ }), $ = r(() => {
50
+ t({ type: "update", payload: e }), n.current && s();
51
+ }, [s, t, e]);
52
+ return /* @__PURE__ */ p(
53
+ B.div,
55
54
  {
56
- id: `Tab_${o}_${b}`,
55
+ id: `Tab_${e}_${b}`,
57
56
  "data-name": "Tab",
58
- ref: p,
57
+ ref: i,
59
58
  role: "tab",
60
59
  "aria-selected": n.current,
61
- "aria-controls": `TabPanel_${o}_${b}`,
60
+ "aria-controls": `TabPanel_${e}_${b}`,
62
61
  tabIndex: n.current ? 0 : -1,
63
62
  style: N,
64
- className: u(
63
+ className: d(
65
64
  "text-b3 group inline-block cursor-pointer overflow-hidden whitespace-nowrap bg-transparent pe-4 align-middle font-semibold outline-none",
66
65
  y,
67
66
  {
@@ -69,22 +68,22 @@ const f = "-z-1 rounded-pill absolute inset-0 duration-300", X = ({
69
68
  [w]: n.current
70
69
  }
71
70
  ),
72
- onKeyDown: $,
73
- onClick: D,
74
- children: /* @__PURE__ */ j(T, { className: "relative inline-block px-20 py-12", children: [
75
- /* @__PURE__ */ d(
71
+ onKeyDown: S,
72
+ onClick: $,
73
+ children: /* @__PURE__ */ D(T, { className: "relative inline-block px-20 py-12", children: [
74
+ /* @__PURE__ */ p(
76
75
  "span",
77
76
  {
78
- className: u(
77
+ className: d(
79
78
  "group-hover:bg-pearl group-focus-within:bg-pearl transition-colors",
80
79
  f
81
80
  )
82
81
  }
83
82
  ),
84
- /* @__PURE__ */ d(
83
+ /* @__PURE__ */ p(
85
84
  "span",
86
85
  {
87
- className: u(
86
+ className: d(
88
87
  "tab-focus-pill ease transition-transform/colors",
89
88
  f,
90
89
  A
@@ -92,7 +91,7 @@ const f = "-z-1 rounded-pill absolute inset-0 duration-300", X = ({
92
91
  style: x
93
92
  }
94
93
  ),
95
- g ?? a
94
+ g ?? c
96
95
  ] })
97
96
  }
98
97
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sources":["../../../lib/molecules/Tabs/Tab.tsx"],"sourcesContent":["'use client';\n\nimport classnames from 'classnames';\nimport {\n type CSSProperties,\n type FunctionComponent,\n useCallback,\n useEffect,\n useRef,\n type PropsWithChildren,\n} from 'react';\n\nimport { animated } from 'react-spring';\n\nimport { useActiveTab, useRegisterTabControl, useTabsUid } from './hooks/tabControl';\nimport { type Theme, getTheme } from './theme';\n\nimport { useSafeBoop } from '../../hooks/useSafeBoop';\nimport { useKeyboardControls } from '../../hooks/useKeyboardControls';\n\nimport './Tab.css';\n\nconst BACKGROUND_PILL_CLASSNAME = '-z-1 rounded-pill absolute inset-0 duration-300';\n\ninterface Props {\n className?: string;\n /**\n * Tab Heading text\n */\n label?: string;\n /**\n * Tab heading index<br/>\n * _Can be **0** or **1** indexed_\n */\n value: number;\n /**\n * on tab select handler\n */\n onSelect?: (context: { value: Props['value']; label: Props['label'] }) => void;\n /**\n * Tab Heading theme\n */\n theme?: Theme;\n /**\n * Heading type\n * _default: **h2**_\n */\n as?: 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5';\n}\n\nexport const Tab: FunctionComponent<PropsWithChildren<Props>> = ({\n className,\n label,\n children,\n value,\n onSelect,\n as: TagName = 'h2',\n theme = 'yellow',\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n const activeTab = useActiveTab();\n const uid = useTabsUid();\n const dispatch = useRegisterTabControl({ value, ref });\n const previousActiveTab = useRef(activeTab);\n\n const isActive = useRef(activeTab === value);\n isActive.current = activeTab === value;\n\n const pillStyle = { '--tab-index': value } as CSSProperties;\n const { textColor, textColorActive, bgColor } = getTheme(theme);\n const [boopStyle, boopTrigger] = useSafeBoop({ scale: 1.02 });\n\n useEffect(() => {\n if (previousActiveTab.current !== activeTab && value === activeTab) {\n ref.current?.focus();\n onSelect?.({ value, label });\n }\n if (previousActiveTab.current !== activeTab) {\n previousActiveTab.current = activeTab;\n }\n }, [label, value, onSelect, activeTab]);\n\n const activate = useCallback(() => {\n if (isActive.current) {\n boopTrigger();\n }\n }, [boopTrigger]);\n\n const start = useCallback(() => {\n dispatch({ type: 'start' });\n }, [dispatch]);\n\n const end = useCallback(() => {\n dispatch({ type: 'end' });\n }, [dispatch]);\n\n const up = useCallback(() => {\n dispatch({ type: 'previous' });\n }, [dispatch]);\n\n const down = useCallback(() => {\n dispatch({ type: 'next' });\n }, [dispatch]);\n\n const left = useCallback(() => {\n const isRTL = document.documentElement.dir === 'rtl';\n\n dispatch({ type: isRTL ? 'next' : 'previous' });\n }, [dispatch]);\n\n const right = useCallback(() => {\n const isRTL = document.documentElement.dir === 'rtl';\n\n dispatch({ type: isRTL ? 'previous' : 'next' });\n }, [dispatch]);\n\n const handleKeyDown = useKeyboardControls({\n activate,\n start,\n end,\n up,\n down,\n left,\n right,\n });\n\n const handleClick = useCallback(() => {\n dispatch({ type: 'update', payload: value });\n\n if (isActive.current) {\n boopTrigger();\n }\n }, [boopTrigger, dispatch, value]);\n\n return (\n <animated.div\n id={`Tab_${value}_${uid}`}\n data-name=\"Tab\"\n ref={ref}\n role=\"tab\"\n aria-selected={isActive.current}\n aria-controls={`TabPanel_${value}_${uid}`}\n tabIndex={isActive.current ? 0 : -1}\n style={boopStyle}\n className={classnames(\n 'text-b3 group inline-block cursor-pointer overflow-hidden whitespace-nowrap bg-transparent pe-4 align-middle font-semibold outline-none',\n className,\n {\n [textColor]: !isActive.current,\n [textColorActive]: isActive.current,\n },\n )}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n >\n <TagName className=\"relative inline-block px-20 py-12\">\n <span\n className={classnames(\n 'group-hover:bg-pearl group-focus-within:bg-pearl transition-colors',\n BACKGROUND_PILL_CLASSNAME,\n )}\n />\n <span\n className={classnames(\n 'tab-focus-pill ease transition-transform/colors',\n BACKGROUND_PILL_CLASSNAME,\n bgColor,\n )}\n style={pillStyle}\n />\n {children ?? label}\n </TagName>\n </animated.div>\n );\n};\n"],"names":["BACKGROUND_PILL_CLASSNAME","Tab","className","label","children","value","onSelect","TagName","theme","ref","useRef","activeTab","useActiveTab","uid","useTabsUid","dispatch","useRegisterTabControl","previousActiveTab","isActive","pillStyle","textColor","textColorActive","bgColor","getTheme","boopStyle","boopTrigger","useSafeBoop","useEffect","_a","activate","useCallback","start","end","up","down","left","isRTL","right","handleKeyDown","useKeyboardControls","handleClick","jsx","animated","classnames","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.js","sources":["../../../lib/molecules/Tabs/Tab.tsx"],"sourcesContent":["'use client';\n\nimport classnames from 'classnames';\nimport {\n type CSSProperties,\n type FunctionComponent,\n useCallback,\n useEffect,\n useRef,\n type PropsWithChildren,\n} from 'react';\n\nimport { animated } from 'react-spring';\n\nimport { useActiveTab, useRegisterTabControl, useTabsUid } from './hooks/tabControl';\nimport { type Theme, getTheme } from './theme';\n\nimport { useSafeBoop } from '../../hooks/useSafeBoop';\nimport { useKeyboardControls } from '../../hooks/useKeyboardControls';\n\nimport './Tab.css';\n\nconst BACKGROUND_PILL_CLASSNAME = '-z-1 rounded-pill absolute inset-0 duration-300';\n\ninterface Props {\n className?: string;\n /**\n * Tab Heading text\n */\n label?: string;\n /**\n * Tab heading index<br/>\n * _Can be **0** or **1** indexed_\n */\n value: number;\n /**\n * on tab select handler\n */\n onSelect?: (context: { value: Props['value']; label: Props['label'] }) => void;\n /**\n * Tab Heading theme\n */\n theme?: Theme;\n /**\n * Heading type\n * _default: **h2**_\n */\n as?: 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5';\n}\n\nexport const Tab: FunctionComponent<PropsWithChildren<Props>> = ({\n className,\n label,\n children,\n value,\n onSelect,\n as: TagName = 'h2',\n theme = 'yellow',\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n const activeTab = useActiveTab();\n const uid = useTabsUid();\n const dispatch = useRegisterTabControl({ value, ref });\n const previousActiveTab = useRef(activeTab);\n\n const isActive = useRef(activeTab === value);\n isActive.current = activeTab === value;\n\n const pillStyle = { '--tab-index': value } as CSSProperties;\n const { textColor, textColorActive, bgColor } = getTheme(theme);\n const [boopStyle, boopTrigger] = useSafeBoop({ scale: 1.02 });\n\n useEffect(() => {\n if (previousActiveTab.current !== activeTab && value === activeTab) {\n ref.current?.focus();\n onSelect?.({ value, label });\n }\n if (previousActiveTab.current !== activeTab) {\n previousActiveTab.current = activeTab;\n }\n }, [label, value, onSelect, activeTab]);\n\n const activate = useCallback(() => {\n if (isActive.current) {\n boopTrigger();\n }\n }, [boopTrigger]);\n\n const start = useCallback(() => {\n dispatch({ type: 'start' });\n }, [dispatch]);\n\n const end = useCallback(() => {\n dispatch({ type: 'end' });\n }, [dispatch]);\n\n const up = useCallback(() => {\n dispatch({ type: 'previous' });\n }, [dispatch]);\n\n const down = useCallback(() => {\n dispatch({ type: 'next' });\n }, [dispatch]);\n\n const left = useCallback(() => {\n const isRTL = document.documentElement.dir === 'rtl';\n\n dispatch({ type: isRTL ? 'next' : 'previous' });\n }, [dispatch]);\n\n const right = useCallback(() => {\n const isRTL = document.documentElement.dir === 'rtl';\n\n dispatch({ type: isRTL ? 'previous' : 'next' });\n }, [dispatch]);\n\n const handleKeyDown = useKeyboardControls({\n activate,\n start,\n end,\n up,\n down,\n left,\n right,\n });\n\n const handleClick = useCallback(() => {\n dispatch({ type: 'update', payload: value });\n\n if (isActive.current) {\n boopTrigger();\n }\n }, [boopTrigger, dispatch, value]);\n\n return (\n <animated.div\n id={`Tab_${value}_${uid}`}\n data-name=\"Tab\"\n ref={ref}\n role=\"tab\"\n aria-selected={isActive.current}\n aria-controls={`TabPanel_${value}_${uid}`}\n tabIndex={isActive.current ? 0 : -1}\n style={boopStyle}\n className={classnames(\n 'text-b3 group inline-block cursor-pointer overflow-hidden whitespace-nowrap bg-transparent pe-4 align-middle font-semibold outline-none',\n className,\n {\n [textColor]: !isActive.current,\n [textColorActive]: isActive.current,\n },\n )}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n >\n <TagName className=\"relative inline-block px-20 py-12\">\n <span\n className={classnames(\n 'group-hover:bg-pearl group-focus-within:bg-pearl transition-colors',\n BACKGROUND_PILL_CLASSNAME,\n )}\n />\n <span\n className={classnames(\n 'tab-focus-pill ease transition-transform/colors',\n BACKGROUND_PILL_CLASSNAME,\n bgColor,\n )}\n style={pillStyle}\n />\n {children ?? label}\n </TagName>\n </animated.div>\n );\n};\n"],"names":["BACKGROUND_PILL_CLASSNAME","Tab","className","label","children","value","onSelect","TagName","theme","ref","useRef","activeTab","useActiveTab","uid","useTabsUid","dispatch","useRegisterTabControl","previousActiveTab","isActive","pillStyle","textColor","textColorActive","bgColor","getTheme","boopStyle","boopTrigger","useSafeBoop","useEffect","activate","useCallback","start","end","up","down","left","isRTL","right","handleKeyDown","useKeyboardControls","handleClick","jsx","animated","classnames","jsxs"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type FunctionComponent, type PropsWithChildren } from 'react';
1
+ import { FunctionComponent, PropsWithChildren } from 'react';
2
2
  interface Props {
3
3
  className?: string;
4
4
  /**
@@ -1,54 +1,54 @@
1
1
  "use client";
2
- import { jsx as l, jsxs as d } from "react/jsx-runtime";
3
- import { c as t } from "../../chunks/index.js";
4
- import { useRef as f, useEffect as v } from "react";
2
+ import { jsx as t, jsxs as d } from "react/jsx-runtime";
3
+ import { c as e } from "../../chunks/index.js";
4
+ import { useRef as n, useEffect as v } from "react";
5
5
  import { useSpring as b, animated as h } from "@react-spring/web";
6
6
  import { useActiveTabControl as L } from "./hooks/tabControl.js";
7
- const k = ({
8
- className: n,
9
- constrained: r = !1,
7
+ const j = ({
8
+ className: f,
9
+ constrained: l = !1,
10
10
  children: i
11
11
  }) => {
12
- const s = f(null), c = f(null), [m, e] = L(), [{ scrollLeft: a }, o] = b(() => ({
12
+ const s = n(null), c = n(null), [m, r] = L(), [{ scrollLeft: a }, o] = b(() => ({
13
13
  from: { scrollLeft: 0 }
14
14
  }));
15
15
  v(() => {
16
- if (!(e != null && e.current))
16
+ if (!r?.current)
17
17
  return;
18
- const p = e.current.getBoundingClientRect().left, u = s.current.scrollLeft, w = c.current.offsetWidth;
18
+ const p = r.current.getBoundingClientRect().left, u = s.current.scrollLeft, w = c.current.offsetWidth;
19
19
  o.start({
20
20
  to: {
21
21
  scrollLeft: u + p - w
22
22
  }
23
23
  });
24
- }, [a, e, o]);
24
+ }, [a, r, o]);
25
25
  const x = { "--active-tab": m };
26
- return /* @__PURE__ */ l(
26
+ return /* @__PURE__ */ t(
27
27
  h.div,
28
28
  {
29
29
  ref: s,
30
30
  "data-name": "TabsHeader",
31
- className: t(
31
+ className: e(
32
32
  "scrollbar-hide relative flex max-w-full overflow-x-scroll py-20",
33
- n
33
+ f
34
34
  ),
35
35
  scrollLeft: a,
36
- children: /* @__PURE__ */ d("div", { role: "tablist", className: t("flex flex-row"), style: x, children: [
37
- /* @__PURE__ */ l(
36
+ children: /* @__PURE__ */ d("div", { role: "tablist", className: e("flex flex-row"), style: x, children: [
37
+ /* @__PURE__ */ t(
38
38
  "div",
39
39
  {
40
40
  ref: c,
41
- className: t("shrink-0", {
42
- "w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]": !r
41
+ className: e("shrink-0", {
42
+ "w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]": !l
43
43
  })
44
44
  }
45
45
  ),
46
46
  i,
47
- /* @__PURE__ */ l(
47
+ /* @__PURE__ */ t(
48
48
  "div",
49
49
  {
50
- className: t("shrink-0", {
51
- "w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]": !r
50
+ className: e("shrink-0", {
51
+ "w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]": !l
52
52
  })
53
53
  }
54
54
  )
@@ -57,6 +57,6 @@ const k = ({
57
57
  );
58
58
  };
59
59
  export {
60
- k as TabList
60
+ j as TabList
61
61
  };
62
62
  //# sourceMappingURL=TabList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabList.js","sources":["../../../lib/molecules/Tabs/TabList.tsx"],"sourcesContent":["'use client';\n\nimport classnames from 'classnames';\nimport {\n type CSSProperties,\n useEffect,\n useRef,\n type FunctionComponent,\n type PropsWithChildren,\n} from 'react';\nimport { animated, useSpring } from '@react-spring/web';\n\nimport { useActiveTabControl } from './hooks/tabControl';\n\ninterface Props {\n className?: string;\n /**\n * Remove filler placeholders\n */\n constrained?: boolean;\n}\n\nexport const TabList: FunctionComponent<PropsWithChildren<Props>> = ({\n className,\n constrained = false,\n children,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const spacerRef = useRef<HTMLDivElement>(null);\n const [currentTab, currentControl] = useActiveTabControl();\n\n const [{ scrollLeft }, scrollApi] = useSpring(() => ({\n from: { scrollLeft: 0 },\n }));\n\n useEffect(() => {\n if (!currentControl?.current) {\n return;\n }\n\n const tabLeft = currentControl.current.getBoundingClientRect().left;\n const scrollLeft = containerRef.current!.scrollLeft;\n const spacerWidth = spacerRef.current!.offsetWidth;\n\n scrollApi.start({\n to: {\n scrollLeft: scrollLeft + tabLeft - spacerWidth,\n },\n });\n }, [scrollLeft, currentControl, scrollApi]);\n\n const style = { '--active-tab': currentTab } as CSSProperties;\n\n return (\n <animated.div\n ref={containerRef}\n data-name=\"TabsHeader\"\n className={classnames(\n 'scrollbar-hide relative flex max-w-full overflow-x-scroll py-20',\n className,\n )}\n scrollLeft={scrollLeft}\n >\n <div role=\"tablist\" className={classnames('flex flex-row')} style={style}>\n <div\n ref={spacerRef}\n className={classnames('shrink-0', {\n 'w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]':\n !constrained,\n })}\n />\n {children}\n <div\n className={classnames('shrink-0', {\n 'w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]':\n !constrained,\n })}\n />\n </div>\n </animated.div>\n );\n};\n"],"names":["TabList","className","constrained","children","containerRef","useRef","spacerRef","currentTab","currentControl","useActiveTabControl","scrollLeft","scrollApi","useSpring","useEffect","tabLeft","spacerWidth","style","jsx","animated","classnames","jsxs"],"mappings":";;;;;;AAsBO,MAAMA,IAAuD,CAAC;AAAA,EACnE,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAYD,EAAuB,IAAI,GACvC,CAACE,GAAYC,CAAc,IAAIC,EAAA,GAE/B,CAAC,EAAE,YAAAC,EAAA,GAAcC,CAAS,IAAIC,EAAU,OAAO;AAAA,IACnD,MAAM,EAAE,YAAY,EAAA;AAAA,EAAE,EACtB;AAEF,EAAAC,EAAU,MAAM;AACd,QAAI,EAACL,KAAA,QAAAA,EAAgB;AACnB;AAGF,UAAMM,IAAUN,EAAe,QAAQ,sBAAA,EAAwB,MACzDE,IAAaN,EAAa,QAAS,YACnCW,IAAcT,EAAU,QAAS;AAEvC,IAAAK,EAAU,MAAM;AAAA,MACd,IAAI;AAAA,QACF,YAAYD,IAAaI,IAAUC;AAAA,MAAA;AAAA,IACrC,CACD;AAAA,EACH,GAAG,CAACL,GAAYF,GAAgBG,CAAS,CAAC;AAE1C,QAAMK,IAAQ,EAAE,gBAAgBT,EAAA;AAEhC,SACE,gBAAAU;AAAA,IAACC,EAAS;AAAA,IAAT;AAAA,MACC,KAAKd;AAAA,MACL,aAAU;AAAA,MACV,WAAWe;AAAA,QACT;AAAA,QACAlB;AAAA,MAAA;AAAA,MAEF,YAAAS;AAAA,MAEA,UAAA,gBAAAU,EAAC,SAAI,MAAK,WAAU,WAAWD,EAAW,eAAe,GAAG,OAAAH,GAC1D,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKX;AAAA,YACL,WAAWa,EAAW,YAAY;AAAA,cAChC,0FACE,CAACjB;AAAA,YAAA,CACJ;AAAA,UAAA;AAAA,QAAA;AAAA,QAEFC;AAAA,QACD,gBAAAc;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWE,EAAW,YAAY;AAAA,cAChC,0FACE,CAACjB;AAAA,YAAA,CACJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"TabList.js","sources":["../../../lib/molecules/Tabs/TabList.tsx"],"sourcesContent":["'use client';\n\nimport classnames from 'classnames';\nimport {\n type CSSProperties,\n useEffect,\n useRef,\n type FunctionComponent,\n type PropsWithChildren,\n} from 'react';\nimport { animated, useSpring } from '@react-spring/web';\n\nimport { useActiveTabControl } from './hooks/tabControl';\n\ninterface Props {\n className?: string;\n /**\n * Remove filler placeholders\n */\n constrained?: boolean;\n}\n\nexport const TabList: FunctionComponent<PropsWithChildren<Props>> = ({\n className,\n constrained = false,\n children,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const spacerRef = useRef<HTMLDivElement>(null);\n const [currentTab, currentControl] = useActiveTabControl();\n\n const [{ scrollLeft }, scrollApi] = useSpring(() => ({\n from: { scrollLeft: 0 },\n }));\n\n useEffect(() => {\n if (!currentControl?.current) {\n return;\n }\n\n const tabLeft = currentControl.current.getBoundingClientRect().left;\n const scrollLeft = containerRef.current!.scrollLeft;\n const spacerWidth = spacerRef.current!.offsetWidth;\n\n scrollApi.start({\n to: {\n scrollLeft: scrollLeft + tabLeft - spacerWidth,\n },\n });\n }, [scrollLeft, currentControl, scrollApi]);\n\n const style = { '--active-tab': currentTab } as CSSProperties;\n\n return (\n <animated.div\n ref={containerRef}\n data-name=\"TabsHeader\"\n className={classnames(\n 'scrollbar-hide relative flex max-w-full overflow-x-scroll py-20',\n className,\n )}\n scrollLeft={scrollLeft}\n >\n <div role=\"tablist\" className={classnames('flex flex-row')} style={style}>\n <div\n ref={spacerRef}\n className={classnames('shrink-0', {\n 'w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]':\n !constrained,\n })}\n />\n {children}\n <div\n className={classnames('shrink-0', {\n 'w-16 lg:w-[max(calc((100vw-1212px)/2),116px)] xl:w-[max(calc((100vw-1212px)/2),156px)]':\n !constrained,\n })}\n />\n </div>\n </animated.div>\n );\n};\n"],"names":["TabList","className","constrained","children","containerRef","useRef","spacerRef","currentTab","currentControl","useActiveTabControl","scrollLeft","scrollApi","useSpring","useEffect","tabLeft","spacerWidth","style","jsx","animated","classnames","jsxs"],"mappings":";;;;;;AAsBO,MAAMA,IAAuD,CAAC;AAAA,EACnE,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAYD,EAAuB,IAAI,GACvC,CAACE,GAAYC,CAAc,IAAIC,EAAA,GAE/B,CAAC,EAAE,YAAAC,EAAA,GAAcC,CAAS,IAAIC,EAAU,OAAO;AAAA,IACnD,MAAM,EAAE,YAAY,EAAA;AAAA,EAAE,EACtB;AAEF,EAAAC,EAAU,MAAM;AACd,QAAI,CAACL,GAAgB;AACnB;AAGF,UAAMM,IAAUN,EAAe,QAAQ,sBAAA,EAAwB,MACzDE,IAAaN,EAAa,QAAS,YACnCW,IAAcT,EAAU,QAAS;AAEvC,IAAAK,EAAU,MAAM;AAAA,MACd,IAAI;AAAA,QACF,YAAYD,IAAaI,IAAUC;AAAA,MAAA;AAAA,IACrC,CACD;AAAA,EACH,GAAG,CAACL,GAAYF,GAAgBG,CAAS,CAAC;AAE1C,QAAMK,IAAQ,EAAE,gBAAgBT,EAAA;AAEhC,SACE,gBAAAU;AAAA,IAACC,EAAS;AAAA,IAAT;AAAA,MACC,KAAKd;AAAA,MACL,aAAU;AAAA,MACV,WAAWe;AAAA,QACT;AAAA,QACAlB;AAAA,MAAA;AAAA,MAEF,YAAAS;AAAA,MAEA,UAAA,gBAAAU,EAAC,SAAI,MAAK,WAAU,WAAWD,EAAW,eAAe,GAAG,OAAAH,GAC1D,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKX;AAAA,YACL,WAAWa,EAAW,YAAY;AAAA,cAChC,0FACE,CAACjB;AAAA,YAAA,CACJ;AAAA,UAAA;AAAA,QAAA;AAAA,QAEFC;AAAA,QACD,gBAAAc;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWE,EAAW,YAAY;AAAA,cAChC,0FACE,CAACjB;AAAA,YAAA,CACJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,4 +1,4 @@
1
- import { type FunctionComponent, type PropsWithChildren } from 'react';
1
+ import { FunctionComponent, PropsWithChildren } from 'react';
2
2
  interface Props {
3
3
  className?: string;
4
4
  /**
@@ -2,13 +2,13 @@
2
2
  import { jsx as p } from "react/jsx-runtime";
3
3
  import { c as u } from "../../chunks/index.js";
4
4
  import { useRef as b, useEffect as f } from "react";
5
- import { useSpring as h, animated as l } from "@react-spring/web";
5
+ import { useSpring as l, animated as h } from "@react-spring/web";
6
6
  import { useTabsUid as T, useActiveTab as g } from "./hooks/tabControl.js";
7
- const i = {
7
+ const n = {
8
8
  opacity: 0,
9
9
  pointerEvents: "none",
10
10
  height: 0
11
- }, n = {
11
+ }, i = {
12
12
  opacity: 1,
13
13
  pointerEvents: "auto",
14
14
  height: "auto"
@@ -18,35 +18,35 @@ const i = {
18
18
  onSelect: a,
19
19
  children: m
20
20
  }) => {
21
- const o = T(), s = b(!1), t = g() === e, [d, r] = h(() => ({
22
- from: t ? n : i
21
+ const r = T(), s = b(!1), t = g() === e, [d, o] = l(() => ({
22
+ from: t ? i : n
23
23
  }));
24
24
  return f(() => {
25
25
  if (!s.current) {
26
26
  s.current = !0;
27
27
  return;
28
28
  }
29
- r.start({
29
+ o.start({
30
30
  to: {
31
- ...t ? n : i,
31
+ ...t ? i : n,
32
32
  height: "auto"
33
33
  },
34
34
  onRest: () => {
35
- r.start({
35
+ o.start({
36
36
  to: { height: t ? "auto" : 0 },
37
37
  immediate: !0
38
38
  });
39
39
  }
40
- }), t && (a == null || a({ value: e }));
41
- }, [t, r, e, a]), /* @__PURE__ */ p(
42
- l.div,
40
+ }), t && a?.({ value: e });
41
+ }, [t, o, e, a]), /* @__PURE__ */ p(
42
+ h.div,
43
43
  {
44
44
  style: d,
45
- id: `TabPanel_${e}_${o}`,
45
+ id: `TabPanel_${e}_${r}`,
46
46
  "data-name": `TabPanel_${e}`,
47
47
  role: "tabpanel",
48
48
  "aria-hidden": !t,
49
- "aria-labelledby": `Tab_${e}_${o}`,
49
+ "aria-labelledby": `Tab_${e}_${r}`,
50
50
  tabIndex: t ? 0 : -1,
51
51
  className: u(c, "col-start-1 col-end-1 row-start-1 row-end-1", {
52
52
  "z-0": !t,
@@ -1 +1 @@
1
- {"version":3,"file":"TabPanel.js","sources":["../../../lib/molecules/Tabs/TabPanel.tsx"],"sourcesContent":["'use client';\n\nimport classnames from 'classnames';\nimport { type FunctionComponent, type PropsWithChildren, useEffect, useRef } from 'react';\nimport { animated, useSpring } from '@react-spring/web';\n\nimport { useActiveTab, useTabsUid } from './hooks/tabControl';\n\ninterface Props {\n className?: string;\n /**\n * Tab panel index<br/>\n * _Can be **0** or **1** indexed_\n */\n value: number;\n /**\n * on panel select handler\n */\n onSelect?: (context: { value: Props['value'] }) => void;\n}\n\ninterface TabStyle {\n pointerEvents: 'none' | 'auto';\n opacity: number;\n height?: number | 'auto';\n}\n\nconst FROM: TabStyle = {\n opacity: 0,\n pointerEvents: 'none',\n height: 0,\n};\n\nconst TO: TabStyle = {\n opacity: 1,\n pointerEvents: 'auto',\n height: 'auto',\n};\n\nexport const TabPanel: FunctionComponent<PropsWithChildren<Props>> = ({\n value,\n className,\n onSelect,\n children,\n}) => {\n const uid = useTabsUid();\n const mounted = useRef(false);\n const tabSelected = useActiveTab();\n const isActive = tabSelected === value;\n\n const [style, styleApi] = useSpring<TabStyle>(() => ({\n from: isActive ? TO : FROM,\n }));\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n\n styleApi.start({\n to: {\n ...(isActive ? TO : FROM),\n height: 'auto',\n },\n onRest: () => {\n styleApi.start({\n to: { height: isActive ? 'auto' : 0 },\n immediate: true,\n });\n },\n });\n\n if (isActive) {\n onSelect?.({ value });\n }\n }, [isActive, styleApi, value, onSelect]);\n\n return (\n <animated.div\n style={style}\n id={`TabPanel_${value}_${uid}`}\n data-name={`TabPanel_${value}`}\n role=\"tabpanel\"\n aria-hidden={!isActive}\n aria-labelledby={`Tab_${value}_${uid}`}\n tabIndex={isActive ? 0 : -1}\n className={classnames(className, 'col-start-1 col-end-1 row-start-1 row-end-1', {\n 'z-0': !isActive,\n 'z-1': isActive,\n })}\n >\n {children}\n </animated.div>\n );\n};\n"],"names":["FROM","TO","TabPanel","value","className","onSelect","children","uid","useTabsUid","mounted","useRef","isActive","useActiveTab","style","styleApi","useSpring","useEffect","jsx","animated","classnames"],"mappings":";;;;;;AA2BA,MAAMA,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AACV,GAEMC,IAAe;AAAA,EACnB,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AACV,GAEaC,IAAwD,CAAC;AAAA,EACpE,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAMC,EAAA,GACNC,IAAUC,EAAO,EAAK,GAEtBC,IADcC,EAAA,MACaT,GAE3B,CAACU,GAAOC,CAAQ,IAAIC,EAAoB,OAAO;AAAA,IACnD,MAAMJ,IAAWV,IAAKD;AAAA,EAAA,EACtB;AAEF,SAAAgB,EAAU,MAAM;AACd,QAAI,CAACP,EAAQ,SAAS;AACpB,MAAAA,EAAQ,UAAU;AAClB;AAAA,IACF;AAEA,IAAAK,EAAS,MAAM;AAAA,MACb,IAAI;AAAA,QACF,GAAIH,IAAWV,IAAKD;AAAA,QACpB,QAAQ;AAAA,MAAA;AAAA,MAEV,QAAQ,MAAM;AACZ,QAAAc,EAAS,MAAM;AAAA,UACb,IAAI,EAAE,QAAQH,IAAW,SAAS,EAAA;AAAA,UAClC,WAAW;AAAA,QAAA,CACZ;AAAA,MACH;AAAA,IAAA,CACD,GAEGA,MACFN,KAAA,QAAAA,EAAW,EAAE,OAAAF;EAEjB,GAAG,CAACQ,GAAUG,GAAUX,GAAOE,CAAQ,CAAC,GAGtC,gBAAAY;AAAA,IAACC,EAAS;AAAA,IAAT;AAAA,MACC,OAAAL;AAAA,MACA,IAAI,YAAYV,CAAK,IAAII,CAAG;AAAA,MAC5B,aAAW,YAAYJ,CAAK;AAAA,MAC5B,MAAK;AAAA,MACL,eAAa,CAACQ;AAAA,MACd,mBAAiB,OAAOR,CAAK,IAAII,CAAG;AAAA,MACpC,UAAUI,IAAW,IAAI;AAAA,MACzB,WAAWQ,EAAWf,GAAW,+CAA+C;AAAA,QAC9E,OAAO,CAACO;AAAA,QACR,OAAOA;AAAA,MAAA,CACR;AAAA,MAEA,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"TabPanel.js","sources":["../../../lib/molecules/Tabs/TabPanel.tsx"],"sourcesContent":["'use client';\n\nimport classnames from 'classnames';\nimport { type FunctionComponent, type PropsWithChildren, useEffect, useRef } from 'react';\nimport { animated, useSpring } from '@react-spring/web';\n\nimport { useActiveTab, useTabsUid } from './hooks/tabControl';\n\ninterface Props {\n className?: string;\n /**\n * Tab panel index<br/>\n * _Can be **0** or **1** indexed_\n */\n value: number;\n /**\n * on panel select handler\n */\n onSelect?: (context: { value: Props['value'] }) => void;\n}\n\ninterface TabStyle {\n pointerEvents: 'none' | 'auto';\n opacity: number;\n height?: number | 'auto';\n}\n\nconst FROM: TabStyle = {\n opacity: 0,\n pointerEvents: 'none',\n height: 0,\n};\n\nconst TO: TabStyle = {\n opacity: 1,\n pointerEvents: 'auto',\n height: 'auto',\n};\n\nexport const TabPanel: FunctionComponent<PropsWithChildren<Props>> = ({\n value,\n className,\n onSelect,\n children,\n}) => {\n const uid = useTabsUid();\n const mounted = useRef(false);\n const tabSelected = useActiveTab();\n const isActive = tabSelected === value;\n\n const [style, styleApi] = useSpring<TabStyle>(() => ({\n from: isActive ? TO : FROM,\n }));\n\n useEffect(() => {\n if (!mounted.current) {\n mounted.current = true;\n return;\n }\n\n styleApi.start({\n to: {\n ...(isActive ? TO : FROM),\n height: 'auto',\n },\n onRest: () => {\n styleApi.start({\n to: { height: isActive ? 'auto' : 0 },\n immediate: true,\n });\n },\n });\n\n if (isActive) {\n onSelect?.({ value });\n }\n }, [isActive, styleApi, value, onSelect]);\n\n return (\n <animated.div\n style={style}\n id={`TabPanel_${value}_${uid}`}\n data-name={`TabPanel_${value}`}\n role=\"tabpanel\"\n aria-hidden={!isActive}\n aria-labelledby={`Tab_${value}_${uid}`}\n tabIndex={isActive ? 0 : -1}\n className={classnames(className, 'col-start-1 col-end-1 row-start-1 row-end-1', {\n 'z-0': !isActive,\n 'z-1': isActive,\n })}\n >\n {children}\n </animated.div>\n );\n};\n"],"names":["FROM","TO","TabPanel","value","className","onSelect","children","uid","useTabsUid","mounted","useRef","isActive","useActiveTab","style","styleApi","useSpring","useEffect","jsx","animated","classnames"],"mappings":";;;;;;AA2BA,MAAMA,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AACV,GAEMC,IAAe;AAAA,EACnB,SAAS;AAAA,EACT,eAAe;AAAA,EACf,QAAQ;AACV,GAEaC,IAAwD,CAAC;AAAA,EACpE,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAMC,EAAA,GACNC,IAAUC,EAAO,EAAK,GAEtBC,IADcC,EAAA,MACaT,GAE3B,CAACU,GAAOC,CAAQ,IAAIC,EAAoB,OAAO;AAAA,IACnD,MAAMJ,IAAWV,IAAKD;AAAA,EAAA,EACtB;AAEF,SAAAgB,EAAU,MAAM;AACd,QAAI,CAACP,EAAQ,SAAS;AACpB,MAAAA,EAAQ,UAAU;AAClB;AAAA,IACF;AAEA,IAAAK,EAAS,MAAM;AAAA,MACb,IAAI;AAAA,QACF,GAAIH,IAAWV,IAAKD;AAAA,QACpB,QAAQ;AAAA,MAAA;AAAA,MAEV,QAAQ,MAAM;AACZ,QAAAc,EAAS,MAAM;AAAA,UACb,IAAI,EAAE,QAAQH,IAAW,SAAS,EAAA;AAAA,UAClC,WAAW;AAAA,QAAA,CACZ;AAAA,MACH;AAAA,IAAA,CACD,GAEGA,KACFN,IAAW,EAAE,OAAAF,GAAO;AAAA,EAExB,GAAG,CAACQ,GAAUG,GAAUX,GAAOE,CAAQ,CAAC,GAGtC,gBAAAY;AAAA,IAACC,EAAS;AAAA,IAAT;AAAA,MACC,OAAAL;AAAA,MACA,IAAI,YAAYV,CAAK,IAAII,CAAG;AAAA,MAC5B,aAAW,YAAYJ,CAAK;AAAA,MAC5B,MAAK;AAAA,MACL,eAAa,CAACQ;AAAA,MACd,mBAAiB,OAAOR,CAAK,IAAII,CAAG;AAAA,MACpC,UAAUI,IAAW,IAAI;AAAA,MACzB,WAAWQ,EAAWf,GAAW,+CAA+C;AAAA,QAC9E,OAAO,CAACO;AAAA,QACR,OAAOA;AAAA,MAAA,CACR;AAAA,MAEA,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -1,4 +1,4 @@
1
- import type { ComponentProps, FunctionComponent, PropsWithChildren } from 'react';
1
+ import { ComponentProps, FunctionComponent, PropsWithChildren } from 'react';
2
2
  import { TabsProvider } from './context/TabControl';
3
3
  type ProviderProps = ComponentProps<typeof TabsProvider>;
4
4
  interface Props extends ProviderProps {
@@ -1,4 +1,4 @@
1
- import type { FunctionComponent, PropsWithChildren } from 'react';
1
+ import { FunctionComponent, PropsWithChildren } from 'react';
2
2
  interface Props {
3
3
  className?: string;
4
4
  }
@@ -1,4 +1,4 @@
1
- import { type Dispatch, type PropsWithChildren, type RefObject } from 'react';
1
+ import { Dispatch, PropsWithChildren, RefObject } from 'react';
2
2
  type RefTab<T extends HTMLElement = HTMLElement> = RefObject<T>;
3
3
  type RefTabs<T extends HTMLElement = HTMLElement> = Map<number, RefTab<T>>;
4
4
  type TabsUpdateAction = {
@@ -34,7 +34,7 @@ interface TabControl<T extends HTMLElement = HTMLElement> extends TabsState<T> {
34
34
  register: (value: number, ref: RefTab<T>) => void;
35
35
  unregister: (value: number) => void;
36
36
  }
37
- export declare const TabControlContext: import("react").Context<TabControl<HTMLElement>>;
37
+ export declare const TabControlContext: import('react').Context<TabControl<HTMLElement>>;
38
38
  export interface TabsProviderProps {
39
39
  selected?: number;
40
40
  /**
@@ -1,6 +1,6 @@
1
- import { type RefObject } from 'react';
1
+ import { RefObject } from 'react';
2
2
  export declare const useActiveTab: () => number;
3
- export declare const useTabDispatch: () => import("react").Dispatch<{
3
+ export declare const useTabDispatch: () => import('react').Dispatch<{
4
4
  type: "update";
5
5
  payload: number;
6
6
  } | {
@@ -9,7 +9,7 @@ export declare const useTabDispatch: () => import("react").Dispatch<{
9
9
  value: number;
10
10
  };
11
11
  } | {
12
- type: "start" | "end" | "next" | "previous";
12
+ type: "start" | "end" | "previous" | "next";
13
13
  } | {
14
14
  type: "register";
15
15
  payload: {
@@ -22,7 +22,7 @@ interface Props<T extends HTMLElement> {
22
22
  value: number;
23
23
  ref: RefObject<T>;
24
24
  }
25
- export declare function useRegisterTabControl<T extends HTMLElement>({ value, ref }: Props<T>): import("react").Dispatch<{
25
+ export declare function useRegisterTabControl<T extends HTMLElement>({ value, ref }: Props<T>): import('react').Dispatch<{
26
26
  type: "update";
27
27
  payload: number;
28
28
  } | {
@@ -31,7 +31,7 @@ export declare function useRegisterTabControl<T extends HTMLElement>({ value, re
31
31
  value: number;
32
32
  };
33
33
  } | {
34
- type: "start" | "end" | "next" | "previous";
34
+ type: "start" | "end" | "previous" | "next";
35
35
  } | {
36
36
  type: "register";
37
37
  payload: {
@@ -1,7 +1,7 @@
1
- import { type IconicNames } from '@clubmed/trident-icons';
2
- import type { FunctionComponent } from 'react';
3
- import { type BgColor, type BorderColor, type TextColor } from '../helpers/colors/colors.js';
4
- import type { LiteralUnion } from '../types/LiteralUnion';
1
+ import { IconicNames } from '@clubmed/trident-icons';
2
+ import { FunctionComponent } from 'react';
3
+ import { BgColor, BorderColor, TextColor } from '../helpers/colors/colors.js';
4
+ import { LiteralUnion } from '../types/LiteralUnion';
5
5
  export interface TagProps {
6
6
  /**
7
7
  * Additional class names
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clubmed/trident-ui",
3
- "version": "1.3.0-beta.11",
3
+ "version": "1.3.0-beta.13",
4
4
  "type": "module",
5
5
  "description": "Shared ClubMed React UI components",
6
6
  "keywords": [
@@ -46,16 +46,16 @@
46
46
  "import": "./molecules/Tabs/index.js",
47
47
  "default": "./molecules/Tabs/index.js"
48
48
  },
49
- "./molecules/Forms/Password": {
50
- "types": "./molecules/Forms/Password/index.d.ts",
51
- "import": "./molecules/Forms/Password/index.js",
52
- "default": "./molecules/Forms/Password/index.js"
53
- },
54
49
  "./molecules/Forms/Checkboxes": {
55
50
  "types": "./molecules/Forms/Checkboxes/index.d.ts",
56
51
  "import": "./molecules/Forms/Checkboxes/index.js",
57
52
  "default": "./molecules/Forms/Checkboxes/index.js"
58
53
  },
54
+ "./molecules/Forms/Password": {
55
+ "types": "./molecules/Forms/Password/index.d.ts",
56
+ "import": "./molecules/Forms/Password/index.js",
57
+ "default": "./molecules/Forms/Password/index.js"
58
+ },
59
59
  "./molecules/Forms/Radios": {
60
60
  "types": "./molecules/Forms/Radios/index.d.ts",
61
61
  "import": "./molecules/Forms/Radios/index.js",
@@ -109,86 +109,84 @@
109
109
  "dependencies": {
110
110
  "@juggle/resize-observer": "^3.4.0",
111
111
  "@use-gesture/react": "^10.2.26",
112
- "@whitespace/storybook-addon-html": "6.0.5",
113
- "build": "^0.1.4",
114
112
  "classnames": "^2.3.2",
115
113
  "date-fns": "^2.30.0",
116
114
  "react-day-picker": "^8.10.0",
117
115
  "react-hot-toast": "^2.4.1",
118
116
  "react-use-measure": "^2.1.1",
119
- "run": "^1.5.0",
120
117
  "use-boop": "^1.1.1",
121
118
  "use-resize-observer": "^9.1.0"
122
119
  },
123
120
  "devDependencies": {
124
- "@react-spring/web": "^9.7.3",
125
- "@clubmed/trident-icons": ">=1.0.1",
121
+ "@clubmed/trident-icons": ">=1.3.3",
126
122
  "@commitlint/cli": "18.6.1",
127
123
  "@commitlint/config-conventional": "18.6.2",
128
- "@netsells/storybook-mockdate": "^0.3.2",
129
- "@storybook/addon-a11y": "8.3.5",
130
- "@storybook/addon-actions": "8.3.5",
131
- "@storybook/addon-essentials": "8.3.5",
132
- "@storybook/addon-interactions": "8.3.5",
133
- "@storybook/addon-links": "8.3.5",
134
- "@storybook/addon-mdx-gfm": "8.3.5",
135
- "@storybook/addon-styling": "1.3.7",
136
- "@storybook/addon-viewport": "8.3.5",
137
- "@storybook/blocks": "8.3.5",
138
- "@storybook/react": "8.3.5",
139
- "@storybook/react-vite": "8.3.5",
140
- "@storybook/test": "8.3.5",
124
+ "@netsells/storybook-mockdate": "0.3.3",
125
+ "@react-spring/web": "^9.7.3",
126
+ "@storybook/addon-a11y": "9.1.1",
127
+ "@storybook/addon-docs": "9.1.1",
128
+ "@storybook/addon-links": "9.1.1",
129
+ "@storybook/addon-onboarding": "9.1.1",
130
+ "@storybook/addon-themes": "9.1.1",
131
+ "@storybook/addon-vitest": "^9.1.1",
132
+ "@storybook/react-vite": "9.1.1",
141
133
  "@svgr/rollup": "8.1.0",
142
134
  "@testing-library/jest-dom": "^6.3.0",
143
135
  "@testing-library/react": "^14.1.2",
144
136
  "@testing-library/user-event": "^14.5.2",
145
137
  "@types/fs-extra": "^11.0.4",
146
138
  "@types/picomatch": "^2.3.3",
139
+ "@types/lodash": "^4.17.20",
147
140
  "@types/react": "^18.2.48",
148
141
  "@types/react-dom": "^18.2.18",
149
142
  "@typescript-eslint/eslint-plugin": "^6.19.1",
150
143
  "@typescript-eslint/parser": "^6.19.1",
151
- "@vitejs/plugin-react": "^4.2.1",
152
- "@vitest/coverage-v8": "2.1.2",
144
+ "@vitejs/plugin-react-swc": "^4.0.0",
145
+ "@vitest/browser": "3.2.4",
146
+ "@vitest/coverage-v8": "3.2.4",
153
147
  "add": "^2.0.6",
154
148
  "autoprefixer": "^10.4.17",
155
149
  "change-case": "^5.4.3",
156
150
  "eslint": "^8.56.0",
157
151
  "eslint-config-prettier": "9.1.0",
152
+ "eslint-formatter-gitlab": "5.1.0",
158
153
  "eslint-plugin-prettier": "5.1.3",
159
154
  "eslint-plugin-react-hooks": "^4.6.0",
160
155
  "eslint-plugin-react-refresh": "^0.4.5",
161
- "eslint-plugin-storybook": "^0.6.15",
156
+ "eslint-plugin-storybook": "^9.1.1",
162
157
  "figures": "^6.1.0",
163
158
  "fs-extra": "^11.2.0",
164
159
  "globby": "^14.0.1",
165
160
  "husky": "^9.0.11",
161
+ "jest-axe": "^10.0.0",
166
162
  "jsdom": "^22.1.0",
167
163
  "lint-staged": "^15.2.2",
168
164
  "picomatch": "^4.0.1",
165
+ "playwright": "^1.54.2",
169
166
  "postcss": "^8.4.32",
170
167
  "prettier": "3.2.5",
171
168
  "react": "^18.2.0",
172
169
  "react-dom": "^18.2.0",
173
170
  "react-syntax-highlighter": "^15.5.0",
174
171
  "rollup-preserve-directives": "^1.1.1",
175
- "storybook": "8.3.5",
172
+ "storybook": "9.1.1",
176
173
  "svgtofont": "^4.2.0",
177
174
  "tailwindcss": "^3.3.5",
178
175
  "ts-node": "^10.9.2",
179
176
  "typescript": "^5.2.2",
180
- "vite": "5.4.8",
181
- "vite-plugin-dts": "^3.6.4",
182
- "vite-plugin-static-copy": "1.0.1",
183
- "vite-plugin-svgr": "^4.2.0",
184
- "vitest": "^2.1.2"
177
+ "vite": "7.1.1",
178
+ "vite-plugin-dts": "4.5.4",
179
+ "vite-plugin-static-copy": "3.1.1",
180
+ "vite-plugin-svgr": "4.3.0",
181
+ "vite-tsconfig-paths": "^5.1.4",
182
+ "vitest": "3.2.4"
185
183
  },
186
184
  "peerDependencies": {
185
+ "@clubmed/trident-icons": ">=1.3.3",
186
+ "@react-spring/web": ">=9",
187
187
  "react": ">=17.0.2",
188
188
  "react-dom": ">=17.0.2",
189
- "tailwindcss": ">=3.3.5",
190
- "@clubmed/trident-icons": ">=1.0.1",
191
- "@react-spring/web": ">=9"
189
+ "tailwindcss": ">=3.3.5"
192
190
  },
193
191
  "peerDependenciesMeta": {
194
192
  "@clubmed/trident-icons": {
@@ -1,4 +1,4 @@
1
1
  export declare const animationDelay: {
2
- handler: import("tailwindcss/types/config").PluginCreator;
3
- config?: Partial<import("tailwindcss/types/config").Config> | undefined;
2
+ handler: import('tailwindcss/types/config').PluginCreator;
3
+ config?: Partial<import('tailwindcss/types/config').Config>;
4
4
  };
@@ -1,4 +1,4 @@
1
1
  export declare const hocus: {
2
- handler: import("tailwindcss/types/config").PluginCreator;
3
- config?: Partial<import("tailwindcss/types/config").Config> | undefined;
2
+ handler: import('tailwindcss/types/config').PluginCreator;
3
+ config?: Partial<import('tailwindcss/types/config').Config>;
4
4
  };