@regardio/react 0.4.7 → 0.5.5

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 (172) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -8
  3. package/dist/{components/background-slideshow.js → background-slideshow/index.js} +2 -11
  4. package/dist/{components/blurry-gradient.js → blurry-gradient/index.js} +15 -9
  5. package/dist/{components/carousel.d.ts → carousel/index.d.ts} +17 -9
  6. package/dist/{components/carousel.js → carousel/index.js} +34 -30
  7. package/dist/{components/countdown.js → countdown/index.js} +2 -11
  8. package/dist/{components/generic-error.js → generic-error/index.js} +1 -1
  9. package/dist/grid/index.d.ts +1196 -0
  10. package/dist/grid/index.js +239 -0
  11. package/dist/heading/index.d.ts +24 -0
  12. package/dist/{components/heading.js → heading/index.js} +15 -34
  13. package/dist/highlight/index.d.ts +13 -0
  14. package/dist/{components/highlight.js → highlight/index.js} +9 -17
  15. package/dist/hooks/use-nonce.d.ts +1 -6
  16. package/dist/hooks/use-nonce.js +1 -6
  17. package/dist/{components/icon-button.js → icon-button/index.js} +1 -1
  18. package/dist/{components/if.js → if/index.js} +1 -1
  19. package/dist/{components/iframe.js → iframe/index.js} +2 -11
  20. package/dist/{components/link.d.ts → link/index.d.ts} +19 -13
  21. package/dist/{components/link.js → link/index.js} +31 -36
  22. package/dist/list/index.d.ts +69 -0
  23. package/dist/list/index.js +65 -0
  24. package/dist/{components/markdown-container.js → markdown-container/index.js} +3 -67
  25. package/dist/{components/password-input.js → password-input/index.js} +2 -11
  26. package/dist/{components/picture.js → picture/index.js} +2 -11
  27. package/dist/{components/protected-email.d.ts → protected-email/index.d.ts} +1 -1
  28. package/dist/{components/protected-email.js → protected-email/index.js} +1 -1
  29. package/dist/text/index.d.ts +20 -0
  30. package/dist/text/index.js +38 -0
  31. package/dist/utils/author/index.d.ts +3 -0
  32. package/dist/utils/author/index.js +33 -0
  33. package/dist/utils/text/index.d.ts +15 -0
  34. package/dist/utils/text/index.js +73 -0
  35. package/package.json +170 -187
  36. package/src/background-slideshow/background-slideshow.stories.tsx +137 -0
  37. package/src/{components → background-slideshow}/background-slideshow.tsx +3 -1
  38. package/src/background-slideshow/index.ts +2 -0
  39. package/src/{stories/BlurryGradient.stories.tsx → blurry-gradient/blurry-gradient.stories.tsx} +1 -1
  40. package/src/{components → blurry-gradient}/blurry-gradient.tsx +14 -8
  41. package/src/blurry-gradient/index.ts +2 -0
  42. package/src/carousel/carousel-content.tsx +16 -0
  43. package/src/carousel/carousel-item.tsx +23 -0
  44. package/src/carousel/carousel-next.tsx +22 -0
  45. package/src/carousel/carousel-previous.tsx +22 -0
  46. package/src/{components/carousel.tsx → carousel/carousel-root.tsx} +8 -78
  47. package/src/carousel/carousel.stories.tsx +135 -0
  48. package/src/carousel/index.parts.ts +5 -0
  49. package/src/carousel/index.ts +4 -0
  50. package/src/{stories/Countdown.stories.tsx → countdown/countdown.stories.tsx} +1 -1
  51. package/src/{components → countdown}/countdown.tsx +3 -7
  52. package/src/countdown/index.ts +1 -0
  53. package/src/{stories/GenericError.stories.tsx → generic-error/generic-error.stories.tsx} +1 -1
  54. package/src/{components → generic-error}/generic-error.tsx +2 -0
  55. package/src/generic-error/index.ts +2 -0
  56. package/src/grid/grid-item.tsx +188 -0
  57. package/src/grid/grid-root.tsx +72 -0
  58. package/src/grid/grid.stories.tsx +236 -0
  59. package/src/grid/index.parts.ts +2 -0
  60. package/src/grid/index.ts +5 -0
  61. package/src/{stories/Heading.stories.tsx → heading/heading.stories.tsx} +1 -1
  62. package/src/{components → heading}/heading.tsx +17 -25
  63. package/src/heading/index.ts +2 -0
  64. package/src/{stories/Highlight.stories.tsx → highlight/highlight.stories.tsx} +1 -1
  65. package/src/{components → highlight}/highlight.tsx +13 -9
  66. package/src/highlight/index.ts +2 -0
  67. package/src/hooks/use-nonce.ts +0 -10
  68. package/src/{stories/IconButton.stories.tsx → icon-button/icon-button.stories.tsx} +1 -1
  69. package/src/icon-button/index.ts +2 -0
  70. package/src/{stories/If.stories.tsx → if/if.stories.tsx} +1 -1
  71. package/src/if/index.ts +1 -0
  72. package/src/{stories/Iframe.stories.tsx → iframe/iframe.stories.tsx} +1 -1
  73. package/src/{components → iframe}/iframe.tsx +1 -1
  74. package/src/iframe/index.ts +2 -0
  75. package/src/link/index.ts +2 -0
  76. package/src/{stories/Link.stories.tsx → link/link.stories.tsx} +52 -1
  77. package/src/{components → link}/link.tsx +39 -28
  78. package/src/list/index.parts.ts +2 -0
  79. package/src/list/index.ts +4 -0
  80. package/src/list/list-item.tsx +63 -0
  81. package/src/list/list-root-context.ts +21 -0
  82. package/src/list/list-root.tsx +81 -0
  83. package/src/list/list.css +32 -0
  84. package/src/list/list.stories.tsx +119 -0
  85. package/src/list/list.test.tsx +168 -0
  86. package/src/markdown-container/index.ts +2 -0
  87. package/src/{stories/MarkdownContainer.stories.tsx → markdown-container/markdown-container.stories.tsx} +56 -1
  88. package/src/{components → markdown-container}/markdown-container.tsx +3 -1
  89. package/src/password-input/index.ts +2 -0
  90. package/src/{stories/PasswordInput.stories.tsx → password-input/password-input.stories.tsx} +1 -1
  91. package/src/{components → password-input}/password-input.tsx +4 -4
  92. package/src/picture/index.ts +2 -0
  93. package/src/{stories/Picture.stories.tsx → picture/picture.stories.tsx} +1 -1
  94. package/src/{components → picture}/picture.tsx +2 -4
  95. package/src/protected-email/index.ts +2 -0
  96. package/src/{stories/ProtectedEmail.stories.tsx → protected-email/protected-email.stories.tsx} +1 -1
  97. package/src/{components → protected-email}/protected-email.tsx +3 -1
  98. package/src/tailwind.css +10 -0
  99. package/src/text/index.ts +2 -0
  100. package/src/{stories/Text.stories.tsx → text/text.stories.tsx} +1 -1
  101. package/src/text/text.tsx +46 -0
  102. package/src/utils/author/author.tsx +36 -0
  103. package/src/utils/author/index.ts +1 -0
  104. package/src/utils/text/index.ts +1 -0
  105. package/src/utils/text/text.tsx +103 -0
  106. package/dist/components/box.d.ts +0 -20
  107. package/dist/components/box.js +0 -50
  108. package/dist/components/definition-list.d.ts +0 -43
  109. package/dist/components/definition-list.js +0 -89
  110. package/dist/components/heading.d.ts +0 -27
  111. package/dist/components/highlight.d.ts +0 -19
  112. package/dist/components/item.d.ts +0 -70
  113. package/dist/components/item.js +0 -512
  114. package/dist/components/leaflet-map.d.ts +0 -34
  115. package/dist/components/leaflet-map.js +0 -201
  116. package/dist/components/list-item.d.ts +0 -19
  117. package/dist/components/list-item.js +0 -37
  118. package/dist/components/maptiler-map.d.ts +0 -27
  119. package/dist/components/maptiler-map.js +0 -129
  120. package/dist/components/text.d.ts +0 -20
  121. package/dist/components/text.js +0 -45
  122. package/dist/components/unordered-list.d.ts +0 -19
  123. package/dist/components/unordered-list.js +0 -39
  124. package/dist/utils/author.d.ts +0 -9
  125. package/dist/utils/author.js +0 -55
  126. package/dist/utils/cn.d.ts +0 -9
  127. package/dist/utils/cn.js +0 -14
  128. package/dist/utils/is-route-active.d.ts +0 -19
  129. package/dist/utils/is-route-active.js +0 -56
  130. package/dist/utils/text.d.ts +0 -24
  131. package/dist/utils/text.js +0 -127
  132. package/src/components/box.tsx +0 -45
  133. package/src/components/definition-list.tsx +0 -90
  134. package/src/components/item.tsx +0 -340
  135. package/src/components/leaflet-map.tsx +0 -294
  136. package/src/components/link.test.tsx +0 -387
  137. package/src/components/list-item.tsx +0 -30
  138. package/src/components/maptiler-map.tsx +0 -181
  139. package/src/components/text.tsx +0 -38
  140. package/src/components/unordered-list.tsx +0 -32
  141. package/src/hooks/use-nonce.test.ts +0 -35
  142. package/src/stories/BackgroundSlideshow.stories.tsx +0 -68
  143. package/src/stories/Box.stories.tsx +0 -83
  144. package/src/stories/Carousel.stories.tsx +0 -95
  145. package/src/stories/DefinitionList.stories.tsx +0 -51
  146. package/src/stories/Item.stories.tsx +0 -79
  147. package/src/stories/ListItem.stories.tsx +0 -38
  148. package/src/stories/UnorderedList.stories.tsx +0 -73
  149. package/src/styles/tailwind.css +0 -7
  150. package/src/test-setup.ts +0 -1
  151. package/src/utils/author.test.ts +0 -54
  152. package/src/utils/author.tsx +0 -73
  153. package/src/utils/cn.test.ts +0 -48
  154. package/src/utils/cn.ts +0 -14
  155. package/src/utils/is-route-active.test.ts +0 -80
  156. package/src/utils/is-route-active.ts +0 -100
  157. package/src/utils/text.test.ts +0 -152
  158. package/src/utils/text.tsx +0 -209
  159. package/src/vite-env.d.ts +0 -1
  160. /package/dist/{components/background-slideshow.d.ts → background-slideshow/index.d.ts} +0 -0
  161. /package/dist/{components/blurry-gradient.d.ts → blurry-gradient/index.d.ts} +0 -0
  162. /package/dist/{components/countdown.d.ts → countdown/index.d.ts} +0 -0
  163. /package/dist/{components/generic-error.d.ts → generic-error/index.d.ts} +0 -0
  164. /package/dist/{components/icon-button.d.ts → icon-button/index.d.ts} +0 -0
  165. /package/dist/{components/if.d.ts → if/index.d.ts} +0 -0
  166. /package/dist/{components/iframe.d.ts → iframe/index.d.ts} +0 -0
  167. /package/dist/{components/markdown-container.d.ts → markdown-container/index.d.ts} +0 -0
  168. /package/dist/{components/password-input.d.ts → password-input/index.d.ts} +0 -0
  169. /package/dist/{components/picture.d.ts → picture/index.d.ts} +0 -0
  170. /package/src/{components → icon-button}/icon-button.tsx +0 -0
  171. /package/src/{components → if}/if.tsx +0 -0
  172. /package/src/{styles/storybook.css → storybook.css} +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  # The MIT License (MIT)
2
2
 
3
- Copyright © 2025 Regardio
3
+ Copyright © 2026 Regardio
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
6
 
package/README.md CHANGED
@@ -41,10 +41,9 @@ This package requires:
41
41
  Import components, hooks, and utilities directly from their paths for optimal tree-shaking:
42
42
 
43
43
  ```tsx
44
- import { Box } from '@regardio/react/components/box';
45
- import { Link } from '@regardio/react/components/link';
44
+ import { Box } from '@regardio/react/box';
45
+ import { Link } from '@regardio/react/link';
46
46
  import { useNonce } from '@regardio/react/hooks/use-nonce';
47
- import { cn } from '@regardio/react/utils/cn';
48
47
  ```
49
48
 
50
49
  ### TailwindCSS Integration
@@ -52,7 +51,7 @@ import { cn } from '@regardio/react/utils/cn';
52
51
  Components use TailwindCSS for styling. Import the base styles in your app:
53
52
 
54
53
  ```tsx
55
- import '@regardio/react/styles/tailwind.css';
54
+ import '@regardio/react/tailwind.css';
56
55
  ```
57
56
 
58
57
  ## What's Included
@@ -66,7 +65,6 @@ import '@regardio/react/styles/tailwind.css';
66
65
  | `Box` | Flexible container with variant-based styling |
67
66
  | `Carousel` | Embla-powered carousel with navigation controls |
68
67
  | `Countdown` | Dynamic countdown timer display |
69
- | `DefinitionList` | Semantic `<dl>` with `Dt` and `Dd` sub-components |
70
68
  | `GenericError` | React Router error boundary with i18n support |
71
69
  | `Heading` | Semantic headings (h1-h6) with consistent styling |
72
70
  | `Highlight` | Text highlighting with customizable styles |
@@ -76,14 +74,13 @@ import '@regardio/react/styles/tailwind.css';
76
74
  | `Item` | Grid item with theme colors and link support |
77
75
  | `LeafletMap` | Leaflet map integration |
78
76
  | `Link` | React Router link with external URL detection |
79
- | `ListItem` | Styled list item component |
77
+ | `List` | Compound list component with Root and Item |
80
78
  | `MaptilerMap` | MapTiler SDK integration |
81
79
  | `MarkdownContainer` | MDX/Markdown renderer with typography processing |
82
80
  | `PasswordInput` | Password field with visibility toggle |
83
81
  | `Picture` | Responsive images with srcset generation |
84
82
  | `ProtectedEmail` | Email obfuscation for spam protection |
85
83
  | `Text` | Typography component with variants |
86
- | `UnorderedList` | Styled unordered list with variants |
87
84
 
88
85
  ### Hooks
89
86
 
@@ -102,12 +99,13 @@ import '@regardio/react/styles/tailwind.css';
102
99
 
103
100
  | Utility | Description |
104
101
  |---------|-------------|
105
- | `cn` | TailwindCSS class name merging (tailwind-merge + cva) |
106
102
  | `author` | Author/contributor data formatting |
107
103
  | `isRouteActive` | Route matching utilities |
108
104
  | `locale` | Locale detection and formatting |
109
105
  | `text` | Typography processing (quotes, special chars) |
110
106
 
107
+ > **Note:** For Tailwind utilities like `cn`, `tv`, and `twMerge`, use `@regardio/tailwind/utils` instead.
108
+
111
109
  ## Documentation
112
110
 
113
111
  See the [docs](./docs) folder for detailed documentation on each component, hook, and utility.
@@ -1,17 +1,8 @@
1
1
  import { useMemo, useState, useRef, useEffect } from 'react';
2
- import { defineConfig, cx } from 'cva';
3
- import { twMerge } from 'fluid-tailwindcss/tailwind-merge';
2
+ import { cn } from '@regardio/tailwind/utils';
4
3
  import { jsx, jsxs } from 'react/jsx-runtime';
5
4
 
6
- // src/components/background-slideshow.tsx
7
- var { cva, compose } = defineConfig({
8
- hooks: {
9
- onComplete: (className) => {
10
- return twMerge(className);
11
- }
12
- }
13
- });
14
- var cn = (...inputs) => twMerge(cx(inputs));
5
+ // src/background-slideshow/background-slideshow.tsx
15
6
  var Picture = ({
16
7
  alt,
17
8
  baseUrl,
@@ -1,8 +1,14 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
 
3
- // src/components/blurry-gradient.tsx
3
+ // src/blurry-gradient/blurry-gradient.tsx
4
4
  var BlurryGradient = (props) => {
5
- const { description = "Decorative blurry gradient", ...svgProps } = props;
5
+ const {
6
+ description = "Decorative blurry gradient",
7
+ neutralColor,
8
+ primaryColor,
9
+ secondaryColor,
10
+ ...svgProps
11
+ } = props;
6
12
  const titleId = "blurryGradientTitle";
7
13
  return /* @__PURE__ */ jsxs(
8
14
  "svg",
@@ -53,7 +59,7 @@ var BlurryGradient = (props) => {
53
59
  /* @__PURE__ */ jsx(
54
60
  "rect",
55
61
  {
56
- fill: props.primaryColor,
62
+ fill: primaryColor,
57
63
  height: "1000",
58
64
  width: "1000"
59
65
  }
@@ -64,7 +70,7 @@ var BlurryGradient = (props) => {
64
70
  {
65
71
  cx: "730",
66
72
  cy: "559",
67
- fill: props.secondaryColor,
73
+ fill: secondaryColor,
68
74
  r: "357"
69
75
  }
70
76
  ),
@@ -73,7 +79,7 @@ var BlurryGradient = (props) => {
73
79
  {
74
80
  cx: "316",
75
81
  cy: "248",
76
- fill: props.primaryColor,
82
+ fill: primaryColor,
77
83
  r: "357"
78
84
  }
79
85
  ),
@@ -82,7 +88,7 @@ var BlurryGradient = (props) => {
82
88
  {
83
89
  cx: "509",
84
90
  cy: "410",
85
- fill: props.neutralColor,
91
+ fill: neutralColor,
86
92
  r: "357"
87
93
  }
88
94
  ),
@@ -91,7 +97,7 @@ var BlurryGradient = (props) => {
91
97
  {
92
98
  cx: "633",
93
99
  cy: "232",
94
- fill: props.secondaryColor,
100
+ fill: secondaryColor,
95
101
  r: "357"
96
102
  }
97
103
  ),
@@ -100,7 +106,7 @@ var BlurryGradient = (props) => {
100
106
  {
101
107
  cx: "156",
102
108
  cy: "82",
103
- fill: props.primaryColor,
109
+ fill: primaryColor,
104
110
  r: "357"
105
111
  }
106
112
  ),
@@ -109,7 +115,7 @@ var BlurryGradient = (props) => {
109
115
  {
110
116
  cx: "150",
111
117
  cy: "389",
112
- fill: props.neutralColor,
118
+ fill: neutralColor,
113
119
  r: "357"
114
120
  }
115
121
  )
@@ -1,6 +1,11 @@
1
1
  import * as react from 'react';
2
2
  import { HTMLAttributes } from 'react';
3
- import { EmblaOptionsType, EmblaCarouselType } from 'embla-carousel';
3
+ import { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel';
4
+
5
+ interface CarouselItemProps extends HTMLAttributes<HTMLDivElement> {
6
+ 'aria-label'?: string;
7
+ }
8
+ declare const CarouselItem: react.ForwardRefExoticComponent<CarouselItemProps & react.RefAttributes<HTMLDivElement>>;
4
9
 
5
10
  type CarouselApi = EmblaCarouselType;
6
11
  interface CarouselContextValue {
@@ -11,18 +16,21 @@ interface CarouselContextValue {
11
16
  canScrollNext: boolean;
12
17
  }
13
18
  declare function useCarousel(): CarouselContextValue;
14
- interface CarouselProps extends HTMLAttributes<HTMLDivElement> {
19
+ interface CarouselRootProps extends HTMLAttributes<HTMLDivElement> {
15
20
  opts?: EmblaOptionsType;
16
21
  setApi?: (api: CarouselApi) => void;
17
22
  orientation?: 'horizontal' | 'vertical';
18
23
  }
19
- declare const Carousel: react.ForwardRefExoticComponent<CarouselProps & react.RefAttributes<HTMLDivElement>>;
24
+ declare const CarouselRoot: react.ForwardRefExoticComponent<CarouselRootProps & react.RefAttributes<HTMLDivElement>>;
25
+
20
26
  declare const CarouselContent: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
21
- interface CarouselItemProps extends HTMLAttributes<HTMLDivElement> {
22
- 'aria-label'?: string;
23
- }
24
- declare const CarouselItem: react.ForwardRefExoticComponent<CarouselItemProps & react.RefAttributes<HTMLDivElement>>;
25
- declare const CarouselPrevious: react.ForwardRefExoticComponent<HTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
27
+
26
28
  declare const CarouselNext: react.ForwardRefExoticComponent<HTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
27
29
 
28
- export { Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel };
30
+ declare const CarouselPrevious: react.ForwardRefExoticComponent<HTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
31
+
32
+ declare namespace index_parts {
33
+ export { CarouselContent as Content, CarouselItem as Item, CarouselNext as Next, CarouselPrevious as Previous, CarouselRoot as Root };
34
+ }
35
+
36
+ export { index_parts as Carousel, type CarouselApi, type CarouselItemProps, type CarouselRootProps, useCarousel };
@@ -1,27 +1,21 @@
1
1
  import useEmblaCarousel from 'embla-carousel-react';
2
2
  import { createContext, forwardRef, useState, useCallback, useEffect, useContext } from 'react';
3
- import { defineConfig, cx } from 'cva';
4
- import { twMerge } from 'fluid-tailwindcss/tailwind-merge';
5
3
  import { jsx } from 'react/jsx-runtime';
6
4
 
7
- // src/components/carousel.tsx
8
- var { cva, compose } = defineConfig({
9
- hooks: {
10
- onComplete: (className) => {
11
- return twMerge(className);
12
- }
13
- }
14
- });
15
- var cn = (...inputs) => twMerge(cx(inputs));
5
+ var __defProp = Object.defineProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
16
10
  var CarouselContext = createContext(null);
17
11
  function useCarousel() {
18
12
  const context = useContext(CarouselContext);
19
13
  if (!context) {
20
- throw new Error("useCarousel must be used within a <Carousel />");
14
+ throw new Error("useCarousel must be used within a <Carousel.Root />");
21
15
  }
22
16
  return context;
23
17
  }
24
- var Carousel = forwardRef(
18
+ var CarouselRoot = forwardRef(
25
19
  ({ children, className, opts, orientation = "horizontal", setApi, ...props }, ref) => {
26
20
  const [emblaRef, emblaApi] = useEmblaCarousel({
27
21
  ...opts,
@@ -86,7 +80,7 @@ var Carousel = forwardRef(
86
80
  {
87
81
  "aria-label": "Carousel",
88
82
  "aria-roledescription": "carousel",
89
- className: cn("relative", className),
83
+ className,
90
84
  onKeyDownCapture: handleKeyDown,
91
85
  ref,
92
86
  ...props,
@@ -97,13 +91,23 @@ var Carousel = forwardRef(
97
91
  );
98
92
  }
99
93
  );
100
- Carousel.displayName = "Carousel";
94
+ CarouselRoot.displayName = "CarouselRoot";
95
+
96
+ // src/carousel/index.parts.ts
97
+ var index_parts_exports = {};
98
+ __export(index_parts_exports, {
99
+ Content: () => CarouselContent,
100
+ Item: () => CarouselItem,
101
+ Next: () => CarouselNext,
102
+ Previous: () => CarouselPrevious,
103
+ Root: () => CarouselRoot
104
+ });
101
105
  var CarouselContent = forwardRef(
102
106
  ({ className, ...props }, ref) => {
103
107
  return /* @__PURE__ */ jsx(
104
108
  "div",
105
109
  {
106
- className: cn("flex", className),
110
+ className,
107
111
  ref,
108
112
  ...props
109
113
  }
@@ -119,7 +123,7 @@ var CarouselItem = forwardRef(
119
123
  "div",
120
124
  {
121
125
  "aria-roledescription": "slide",
122
- className: cn("min-w-0 shrink-0 grow-0", className),
126
+ className,
123
127
  ref,
124
128
  role: "group",
125
129
  ...props
@@ -129,15 +133,15 @@ var CarouselItem = forwardRef(
129
133
  }
130
134
  );
131
135
  CarouselItem.displayName = "CarouselItem";
132
- var CarouselPrevious = forwardRef(
136
+ var CarouselNext = forwardRef(
133
137
  ({ className, ...props }, ref) => {
134
- const { canScrollPrev, scrollPrev } = useCarousel();
138
+ const { canScrollNext, scrollNext } = useCarousel();
135
139
  return /* @__PURE__ */ jsx(
136
140
  "button",
137
141
  {
138
- className: cn("disabled:opacity-50", className),
139
- disabled: !canScrollPrev,
140
- onClick: scrollPrev,
142
+ className,
143
+ disabled: !canScrollNext,
144
+ onClick: scrollNext,
141
145
  ref,
142
146
  type: "button",
143
147
  ...props
@@ -145,16 +149,16 @@ var CarouselPrevious = forwardRef(
145
149
  );
146
150
  }
147
151
  );
148
- CarouselPrevious.displayName = "CarouselPrevious";
149
- var CarouselNext = forwardRef(
152
+ CarouselNext.displayName = "CarouselNext";
153
+ var CarouselPrevious = forwardRef(
150
154
  ({ className, ...props }, ref) => {
151
- const { canScrollNext, scrollNext } = useCarousel();
155
+ const { canScrollPrev, scrollPrev } = useCarousel();
152
156
  return /* @__PURE__ */ jsx(
153
157
  "button",
154
158
  {
155
- className: cn("disabled:opacity-50", className),
156
- disabled: !canScrollNext,
157
- onClick: scrollNext,
159
+ className,
160
+ disabled: !canScrollPrev,
161
+ onClick: scrollPrev,
158
162
  ref,
159
163
  type: "button",
160
164
  ...props
@@ -162,6 +166,6 @@ var CarouselNext = forwardRef(
162
166
  );
163
167
  }
164
168
  );
165
- CarouselNext.displayName = "CarouselNext";
169
+ CarouselPrevious.displayName = "CarouselPrevious";
166
170
 
167
- export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel };
171
+ export { index_parts_exports as Carousel, useCarousel };
@@ -1,17 +1,8 @@
1
+ import { cn } from '@regardio/tailwind/utils';
1
2
  import { useState, useEffect } from 'react';
2
- import { defineConfig, cx } from 'cva';
3
- import { twMerge } from 'fluid-tailwindcss/tailwind-merge';
4
3
  import { jsx } from 'react/jsx-runtime';
5
4
 
6
- // src/components/countdown.tsx
7
- var { cva, compose } = defineConfig({
8
- hooks: {
9
- onComplete: (className) => {
10
- return twMerge(className);
11
- }
12
- }
13
- });
14
- var cn = (...inputs) => twMerge(cx(inputs));
5
+ // src/countdown/countdown.tsx
15
6
  function Countdown() {
16
7
  const [timerValue, setTimerValue] = useState(0);
17
8
  const [isMounted, setIsMounted] = useState(false);
@@ -1,7 +1,7 @@
1
1
  import { isRouteErrorResponse, useRouteError } from 'react-router';
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
 
4
- // src/components/generic-error.tsx
4
+ // src/generic-error/generic-error.tsx
5
5
  function getErrorDescriptor(error) {
6
6
  if (isRouteErrorResponse(error)) {
7
7
  const status = error.status;