@regardio/react 0.4.7 → 0.5.1

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 (202) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -5
  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-current-route-data.js → use-current-route-data/index.js} +1 -1
  16. package/dist/hooks/{use-focus-search.js → use-focus-search/index.js} +1 -1
  17. package/dist/hooks/{use-matches-data.js → use-matches-data/index.js} +1 -1
  18. package/dist/hooks/{use-media-query.js → use-media-query/index.js} +1 -1
  19. package/dist/hooks/{use-mobile.js → use-mobile/index.js} +1 -1
  20. package/dist/hooks/use-nonce/index.d.ts +6 -0
  21. package/dist/hooks/use-nonce/index.js +8 -0
  22. package/dist/hooks/{use-orientation.d.ts → use-orientation/index.d.ts} +1 -1
  23. package/dist/hooks/{use-orientation.js → use-orientation/index.js} +1 -1
  24. package/dist/hooks/{use-user.js → use-user/index.js} +1 -1
  25. package/dist/{components/icon-button.js → icon-button/index.js} +1 -1
  26. package/dist/{components/if.js → if/index.js} +1 -1
  27. package/dist/{components/iframe.js → iframe/index.js} +2 -11
  28. package/dist/{components/link.d.ts → link/index.d.ts} +19 -13
  29. package/dist/{components/link.js → link/index.js} +31 -36
  30. package/dist/list/index.d.ts +69 -0
  31. package/dist/list/index.js +65 -0
  32. package/dist/{components/markdown-container.js → markdown-container/index.js} +3 -67
  33. package/dist/{components/password-input.js → password-input/index.js} +2 -11
  34. package/dist/{components/picture.js → picture/index.js} +2 -11
  35. package/dist/{components/protected-email.d.ts → protected-email/index.d.ts} +1 -1
  36. package/dist/{components/protected-email.js → protected-email/index.js} +1 -1
  37. package/dist/text/index.d.ts +20 -0
  38. package/dist/text/index.js +38 -0
  39. package/dist/utils/author/index.d.ts +3 -0
  40. package/dist/utils/author/index.js +33 -0
  41. package/dist/utils/text/index.d.ts +15 -0
  42. package/dist/utils/text/index.js +73 -0
  43. package/package.json +92 -121
  44. package/src/{stories/BackgroundSlideshow.stories.tsx → background-slideshow/background-slideshow.stories.tsx} +1 -1
  45. package/src/{components → background-slideshow}/background-slideshow.tsx +3 -1
  46. package/src/background-slideshow/index.ts +2 -0
  47. package/src/{stories/BlurryGradient.stories.tsx → blurry-gradient/blurry-gradient.stories.tsx} +1 -1
  48. package/src/{components → blurry-gradient}/blurry-gradient.tsx +14 -8
  49. package/src/blurry-gradient/index.ts +2 -0
  50. package/src/carousel/carousel-content.tsx +16 -0
  51. package/src/carousel/carousel-item.tsx +23 -0
  52. package/src/carousel/carousel-next.tsx +22 -0
  53. package/src/carousel/carousel-previous.tsx +22 -0
  54. package/src/{components/carousel.tsx → carousel/carousel-root.tsx} +8 -78
  55. package/src/carousel/carousel.stories.tsx +89 -0
  56. package/src/carousel/index.parts.ts +5 -0
  57. package/src/carousel/index.ts +4 -0
  58. package/src/{stories/Countdown.stories.tsx → countdown/countdown.stories.tsx} +1 -1
  59. package/src/{components → countdown}/countdown.tsx +3 -7
  60. package/src/countdown/index.ts +1 -0
  61. package/src/{stories/GenericError.stories.tsx → generic-error/generic-error.stories.tsx} +1 -1
  62. package/src/{components → generic-error}/generic-error.tsx +2 -0
  63. package/src/generic-error/index.ts +2 -0
  64. package/src/grid/grid-item.tsx +188 -0
  65. package/src/grid/grid-root.tsx +72 -0
  66. package/src/grid/grid.stories.tsx +236 -0
  67. package/src/grid/index.parts.ts +2 -0
  68. package/src/grid/index.ts +5 -0
  69. package/src/{stories/Heading.stories.tsx → heading/heading.stories.tsx} +1 -1
  70. package/src/{components → heading}/heading.tsx +17 -25
  71. package/src/heading/index.ts +2 -0
  72. package/src/{stories/Highlight.stories.tsx → highlight/highlight.stories.tsx} +1 -1
  73. package/src/{components → highlight}/highlight.tsx +13 -9
  74. package/src/highlight/index.ts +2 -0
  75. package/src/hooks/use-current-route-data/index.ts +1 -0
  76. package/src/hooks/use-focus-search/index.ts +1 -0
  77. package/src/hooks/use-matches-data/index.ts +1 -0
  78. package/src/hooks/use-media-query/index.ts +1 -0
  79. package/src/hooks/use-mobile/index.ts +1 -0
  80. package/src/hooks/use-nonce/index.ts +1 -0
  81. package/src/hooks/use-orientation/index.ts +1 -0
  82. package/src/hooks/use-user/index.ts +2 -0
  83. package/src/{stories/IconButton.stories.tsx → icon-button/icon-button.stories.tsx} +1 -1
  84. package/src/icon-button/index.ts +2 -0
  85. package/src/{stories/If.stories.tsx → if/if.stories.tsx} +1 -1
  86. package/src/if/index.ts +1 -0
  87. package/src/{stories/Iframe.stories.tsx → iframe/iframe.stories.tsx} +1 -1
  88. package/src/{components → iframe}/iframe.tsx +1 -1
  89. package/src/iframe/index.ts +2 -0
  90. package/src/link/index.ts +2 -0
  91. package/src/{stories/Link.stories.tsx → link/link.stories.tsx} +1 -1
  92. package/src/{components → link}/link.tsx +39 -28
  93. package/src/list/index.parts.ts +2 -0
  94. package/src/list/index.ts +4 -0
  95. package/src/list/list-item.tsx +63 -0
  96. package/src/list/list-root-context.ts +21 -0
  97. package/src/list/list-root.tsx +81 -0
  98. package/src/list/list.css +32 -0
  99. package/src/list/list.stories.tsx +119 -0
  100. package/src/list/list.test.tsx +168 -0
  101. package/src/markdown-container/index.ts +2 -0
  102. package/src/{stories/MarkdownContainer.stories.tsx → markdown-container/markdown-container.stories.tsx} +1 -1
  103. package/src/{components → markdown-container}/markdown-container.tsx +3 -1
  104. package/src/password-input/index.ts +2 -0
  105. package/src/{stories/PasswordInput.stories.tsx → password-input/password-input.stories.tsx} +1 -1
  106. package/src/{components → password-input}/password-input.tsx +4 -4
  107. package/src/picture/index.ts +2 -0
  108. package/src/{stories/Picture.stories.tsx → picture/picture.stories.tsx} +1 -1
  109. package/src/{components → picture}/picture.tsx +2 -4
  110. package/src/protected-email/index.ts +2 -0
  111. package/src/{stories/ProtectedEmail.stories.tsx → protected-email/protected-email.stories.tsx} +1 -1
  112. package/src/{components → protected-email}/protected-email.tsx +3 -1
  113. package/src/tailwind.css +10 -0
  114. package/src/text/index.ts +2 -0
  115. package/src/{stories/Text.stories.tsx → text/text.stories.tsx} +1 -1
  116. package/src/text/text.tsx +46 -0
  117. package/src/utils/author/author.tsx +36 -0
  118. package/src/utils/author/index.ts +1 -0
  119. package/src/utils/text/index.ts +1 -0
  120. package/src/utils/text/text.tsx +103 -0
  121. package/dist/components/box.d.ts +0 -20
  122. package/dist/components/box.js +0 -50
  123. package/dist/components/definition-list.d.ts +0 -43
  124. package/dist/components/definition-list.js +0 -89
  125. package/dist/components/heading.d.ts +0 -27
  126. package/dist/components/highlight.d.ts +0 -19
  127. package/dist/components/item.d.ts +0 -70
  128. package/dist/components/item.js +0 -512
  129. package/dist/components/leaflet-map.d.ts +0 -34
  130. package/dist/components/leaflet-map.js +0 -201
  131. package/dist/components/list-item.d.ts +0 -19
  132. package/dist/components/list-item.js +0 -37
  133. package/dist/components/maptiler-map.d.ts +0 -27
  134. package/dist/components/maptiler-map.js +0 -129
  135. package/dist/components/text.d.ts +0 -20
  136. package/dist/components/text.js +0 -45
  137. package/dist/components/unordered-list.d.ts +0 -19
  138. package/dist/components/unordered-list.js +0 -39
  139. package/dist/hooks/use-nonce.d.ts +0 -12
  140. package/dist/hooks/use-nonce.js +0 -13
  141. package/dist/utils/author.d.ts +0 -9
  142. package/dist/utils/author.js +0 -55
  143. package/dist/utils/cn.d.ts +0 -9
  144. package/dist/utils/cn.js +0 -14
  145. package/dist/utils/is-route-active.d.ts +0 -19
  146. package/dist/utils/is-route-active.js +0 -56
  147. package/dist/utils/text.d.ts +0 -24
  148. package/dist/utils/text.js +0 -127
  149. package/src/components/box.tsx +0 -45
  150. package/src/components/definition-list.tsx +0 -90
  151. package/src/components/item.tsx +0 -340
  152. package/src/components/leaflet-map.tsx +0 -294
  153. package/src/components/link.test.tsx +0 -387
  154. package/src/components/list-item.tsx +0 -30
  155. package/src/components/maptiler-map.tsx +0 -181
  156. package/src/components/text.tsx +0 -38
  157. package/src/components/unordered-list.tsx +0 -32
  158. package/src/hooks/use-nonce.test.ts +0 -35
  159. package/src/stories/Box.stories.tsx +0 -83
  160. package/src/stories/Carousel.stories.tsx +0 -95
  161. package/src/stories/DefinitionList.stories.tsx +0 -51
  162. package/src/stories/Item.stories.tsx +0 -79
  163. package/src/stories/ListItem.stories.tsx +0 -38
  164. package/src/stories/UnorderedList.stories.tsx +0 -73
  165. package/src/styles/tailwind.css +0 -7
  166. package/src/test-setup.ts +0 -1
  167. package/src/utils/author.test.ts +0 -54
  168. package/src/utils/author.tsx +0 -73
  169. package/src/utils/cn.test.ts +0 -48
  170. package/src/utils/cn.ts +0 -14
  171. package/src/utils/is-route-active.test.ts +0 -80
  172. package/src/utils/is-route-active.ts +0 -100
  173. package/src/utils/text.test.ts +0 -152
  174. package/src/utils/text.tsx +0 -209
  175. package/src/vite-env.d.ts +0 -1
  176. /package/dist/{components/background-slideshow.d.ts → background-slideshow/index.d.ts} +0 -0
  177. /package/dist/{components/blurry-gradient.d.ts → blurry-gradient/index.d.ts} +0 -0
  178. /package/dist/{components/countdown.d.ts → countdown/index.d.ts} +0 -0
  179. /package/dist/{components/generic-error.d.ts → generic-error/index.d.ts} +0 -0
  180. /package/dist/hooks/{use-current-route-data.d.ts → use-current-route-data/index.d.ts} +0 -0
  181. /package/dist/hooks/{use-focus-search.d.ts → use-focus-search/index.d.ts} +0 -0
  182. /package/dist/hooks/{use-matches-data.d.ts → use-matches-data/index.d.ts} +0 -0
  183. /package/dist/hooks/{use-media-query.d.ts → use-media-query/index.d.ts} +0 -0
  184. /package/dist/hooks/{use-mobile.d.ts → use-mobile/index.d.ts} +0 -0
  185. /package/dist/hooks/{use-user.d.ts → use-user/index.d.ts} +0 -0
  186. /package/dist/{components/icon-button.d.ts → icon-button/index.d.ts} +0 -0
  187. /package/dist/{components/if.d.ts → if/index.d.ts} +0 -0
  188. /package/dist/{components/iframe.d.ts → iframe/index.d.ts} +0 -0
  189. /package/dist/{components/markdown-container.d.ts → markdown-container/index.d.ts} +0 -0
  190. /package/dist/{components/password-input.d.ts → password-input/index.d.ts} +0 -0
  191. /package/dist/{components/picture.d.ts → picture/index.d.ts} +0 -0
  192. /package/src/hooks/{use-current-route-data.ts → use-current-route-data/use-current-route-data.ts} +0 -0
  193. /package/src/hooks/{use-focus-search.ts → use-focus-search/use-focus-search.ts} +0 -0
  194. /package/src/hooks/{use-matches-data.ts → use-matches-data/use-matches-data.ts} +0 -0
  195. /package/src/hooks/{use-media-query.ts → use-media-query/use-media-query.ts} +0 -0
  196. /package/src/hooks/{use-mobile.ts → use-mobile/use-mobile.ts} +0 -0
  197. /package/src/hooks/{use-nonce.ts → use-nonce/use-nonce.ts} +0 -0
  198. /package/src/hooks/{use-orientation.ts → use-orientation/use-orientation.ts} +0 -0
  199. /package/src/hooks/{use-user.tsx → use-user/use-user.tsx} +0 -0
  200. /package/src/{components → icon-button}/icon-button.tsx +0 -0
  201. /package/src/{components → if}/if.tsx +0 -0
  202. /package/src/{styles/storybook.css → storybook.css} +0 -0
@@ -1,19 +0,0 @@
1
- /**
2
- * @name isRouteActive
3
- * @description A function to check if a route is active. This is used to
4
- * @param end
5
- * @param path
6
- * @param currentPath
7
- */
8
- declare function isRouteActive(path: string, currentPath: string, end?: boolean | ((path: string) => boolean) | undefined): boolean;
9
- /**
10
- * @name checkIfRouteIsActive
11
- * @description A function to check if a route is active. This is used to
12
- * highlight the active link in the navigation.
13
- * @param targetLink - The link to check against
14
- * @param currentRoute - the current route
15
- * @param depth - how far down should segments be matched?
16
- */
17
- declare function checkIfRouteIsActive(targetLink: string, currentRoute: string, depth?: number): boolean;
18
-
19
- export { checkIfRouteIsActive, isRouteActive };
@@ -1,56 +0,0 @@
1
- // src/utils/is-route-active.ts
2
- var ROOT_PATH = "/";
3
- function isRouteActive(path, currentPath, end) {
4
- if (path === currentPath) {
5
- return true;
6
- }
7
- if (typeof end === "function") {
8
- return !end(currentPath);
9
- }
10
- const defaultEnd = end ?? true;
11
- const oneLevelDeep = 1;
12
- const threeLevelsDeep = 3;
13
- const depth = defaultEnd ? oneLevelDeep : threeLevelsDeep;
14
- return checkIfRouteIsActive(path, currentPath, depth);
15
- }
16
- function checkIfRouteIsActive(targetLink, currentRoute, depth = 1) {
17
- const currentRoutePath = currentRoute.split("?")[0] ?? "";
18
- if (!isRoot(currentRoutePath) && isRoot(targetLink)) {
19
- return false;
20
- }
21
- if (!currentRoutePath.includes(targetLink)) {
22
- return false;
23
- }
24
- const isSameRoute = targetLink === currentRoutePath;
25
- if (isSameRoute) {
26
- return true;
27
- }
28
- return hasMatchingSegments(targetLink, currentRoutePath, depth);
29
- }
30
- function splitIntoSegments(href) {
31
- return href.split("/").filter(Boolean);
32
- }
33
- function hasMatchingSegments(targetLink, currentRoute, depth) {
34
- const segments = splitIntoSegments(targetLink);
35
- const matchingSegments = numberOfMatchingSegments(currentRoute, segments);
36
- if (targetLink === currentRoute) {
37
- return true;
38
- }
39
- return matchingSegments > segments.length - (depth - 1);
40
- }
41
- function numberOfMatchingSegments(href, segments) {
42
- let count = 0;
43
- for (const segment of splitIntoSegments(href)) {
44
- if (segments.includes(segment)) {
45
- count += 1;
46
- } else {
47
- return count;
48
- }
49
- }
50
- return count;
51
- }
52
- function isRoot(path) {
53
- return path === ROOT_PATH;
54
- }
55
-
56
- export { checkIfRouteIsActive, isRouteActive };
@@ -1,24 +0,0 @@
1
- import react__default, { ReactNode } from 'react';
2
-
3
- declare const lowerCaseSzett: (text: ReactNode | string, _returnType?: "string") => ReactNode;
4
- declare function toBoolean(value: string | boolean | null | undefined): boolean;
5
- declare function shy(input: string | ReactNode | null): string | ReactNode | null;
6
- /**
7
- * Replace straight quotes with typographically correct quotes for the given locale.
8
- *
9
- * @param text - The text containing straight quotes
10
- * @param locale - The locale to use for quote style (e.g., 'en', 'de', 'fr')
11
- * @returns Text with typographic quotes
12
- *
13
- * @example
14
- * typographicQuotes('"Hello"', 'en') // → '"Hello"'
15
- * typographicQuotes('"Hello"', 'de') // → '„Hello"'
16
- * typographicQuotes('"Hello"', 'fr') // → '« Hello »'
17
- */
18
- declare function typographicQuotes(text: string, locale: string): string;
19
- /**
20
- * @deprecated Use `typographicQuotes` for quote replacement and `shy` separately
21
- */
22
- declare function replaceSpecialChars(text: string, locale: string): react__default.ReactNode;
23
-
24
- export { lowerCaseSzett, replaceSpecialChars, shy, toBoolean, typographicQuotes };
@@ -1,127 +0,0 @@
1
- import React, { isValidElement, cloneElement } from 'react';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- // src/utils/text.tsx
5
- var lowerCaseSzett = (text, _returnType) => {
6
- const processString = (str) => {
7
- const parts = str.split(/(ß)/g);
8
- return parts.map(
9
- (part, index) => part === "\xDF" ? /* @__PURE__ */ jsx(
10
- "span",
11
- {
12
- className: "lowercase",
13
- children: part
14
- },
15
- index.toString()
16
- ) : part
17
- );
18
- };
19
- if (typeof text === "string") {
20
- return processString(text);
21
- }
22
- if (isValidElement(text)) {
23
- const element = text;
24
- const { children, ...props } = element.props;
25
- return cloneElement(element, {
26
- ...props,
27
- children: lowerCaseSzett(children)
28
- });
29
- }
30
- if (Array.isArray(text)) {
31
- return text.map((child, index) => /* @__PURE__ */ jsx(React.Fragment, { children: lowerCaseSzett(child) }, index.toString()));
32
- }
33
- return text;
34
- };
35
- function toBoolean(value) {
36
- if (typeof value === "boolean") {
37
- return value;
38
- }
39
- return value === "true" || value === "1";
40
- }
41
- function replaceShyInString(input) {
42
- return input.replace(/­/g, "\xAD");
43
- }
44
- function replaceShyInReactNode(node) {
45
- if (typeof node === "string") {
46
- return node.replace(/\u00AD/g, "");
47
- }
48
- if (isValidElement(node)) {
49
- const element = node;
50
- const { children, ...props } = element.props;
51
- return cloneElement(element, {
52
- ...props,
53
- children: replaceShyInReactNode(children)
54
- });
55
- }
56
- if (Array.isArray(node)) {
57
- return node.map((child, index) => /* @__PURE__ */ jsx(React.Fragment, { children: replaceShyInReactNode(child) }, index.toString()));
58
- }
59
- return node;
60
- }
61
- function shy(input) {
62
- if (input === null) {
63
- return null;
64
- }
65
- if (typeof input === "string") {
66
- return replaceShyInString(input);
67
- }
68
- return replaceShyInReactNode(input);
69
- }
70
- var quoteStyles = {
71
- cs: { close: "\u201D", closeSingle: "\u2019", open: "\u201E", openSingle: "\u201A" },
72
- // Danish, Norwegian - » « › ‹
73
- da: { close: "\xAB", closeSingle: "\u203A", open: "\xBB", openSingle: "\u2039" },
74
- // German (Germany, Austria) - „ " ‚ '
75
- de: { close: "\u201D", closeSingle: "\u2019", open: "\u201E", openSingle: "\u201A" },
76
- // German (Switzerland) - « » ‹ ›
77
- "de-ch": { close: "\xBB", closeSingle: "\u203A", open: "\xAB", openSingle: "\u2039" },
78
- // English (US, UK, etc.) - " " ' '
79
- en: { close: "\u201D", closeSingle: "\u2019", open: "\u201C", openSingle: "\u2018" },
80
- // Spanish, Italian, Portuguese - « » " "
81
- es: { close: "\xBB", closeSingle: "\u201D", open: "\xAB", openSingle: "\u201C" },
82
- fi: { close: "\u201D", closeSingle: "\u2019", open: "\u201D", openSingle: "\u2019" },
83
- // French - « » ‹ › (with spaces)
84
- fr: { close: " \xBB", closeSingle: " \u203A", open: "\xAB ", openSingle: "\u2039 " },
85
- hu: { close: "\u201D", closeSingle: "\u2019", open: "\u201E", openSingle: "\u201A" },
86
- it: { close: "\xBB", closeSingle: "\u201D", open: "\xAB", openSingle: "\u201C" },
87
- // Japanese - 「 」 『 』
88
- ja: { close: "\u300D", closeSingle: "\u300F", open: "\u300C", openSingle: "\u300E" },
89
- // Dutch - ' ' ' '
90
- nl: { close: "\u2019", closeSingle: "\u2019", open: "\u2018", openSingle: "\u2018" },
91
- no: { close: "\xAB", closeSingle: "\u203A", open: "\xBB", openSingle: "\u2039" },
92
- // Polish, Czech, Hungarian - „ " ‚ '
93
- pl: { close: "\u201D", closeSingle: "\u2019", open: "\u201E", openSingle: "\u201A" },
94
- pt: { close: "\xBB", closeSingle: "\u201D", open: "\xAB", openSingle: "\u201C" },
95
- // Russian - « » ‚ '
96
- ru: { close: "\xBB", closeSingle: "\u2019", open: "\xAB", openSingle: "\u201A" },
97
- // Swedish, Finnish - " " ' '
98
- sv: { close: "\u201D", closeSingle: "\u2019", open: "\u201D", openSingle: "\u2019" },
99
- // Chinese - 「 」 『 』
100
- zh: { close: "\u300D", closeSingle: "\u300F", open: "\u300C", openSingle: "\u300E" }
101
- };
102
- function getQuoteStyle(locale) {
103
- const normalized = locale.toLowerCase();
104
- const exactMatch = quoteStyles[normalized];
105
- if (exactMatch) {
106
- return exactMatch;
107
- }
108
- const baseLanguage = normalized.split("-")[0];
109
- if (baseLanguage) {
110
- const baseMatch = quoteStyles[baseLanguage];
111
- if (baseMatch) {
112
- return baseMatch;
113
- }
114
- }
115
- return quoteStyles.en;
116
- }
117
- function typographicQuotes(text, locale) {
118
- const style = getQuoteStyle(locale);
119
- let result = text.replace(/"([^"]*)"/g, `${style.open}$1${style.close}`);
120
- result = result.replace(/'([^']*)'/g, `${style.openSingle}$1${style.closeSingle}`);
121
- return result;
122
- }
123
- function replaceSpecialChars(text, locale) {
124
- return shy(typographicQuotes(text, locale));
125
- }
126
-
127
- export { lowerCaseSzett, replaceSpecialChars, shy, toBoolean, typographicQuotes };
@@ -1,45 +0,0 @@
1
- import type { ComponentProps, ElementType } from 'react';
2
-
3
- import { cva, type VariantProps } from '../utils/cn';
4
-
5
- const box = cva({
6
- defaultVariants: {
7
- variant: 'primary',
8
- },
9
- variants: {
10
- variant: {
11
- aside: [],
12
- code: ['font-monospace', 'overflow-scroll'],
13
- container: ['u-container'],
14
- flex: ['flex'],
15
- grid: ['u-grid'],
16
- main: [],
17
- primary: [],
18
- section: ['u-grid', 'content-start'],
19
- },
20
- },
21
- });
22
-
23
- export interface BoxProps extends ComponentProps<'div'>, VariantProps<typeof box> {
24
- as?: ElementType;
25
- }
26
-
27
- export const Box = ({
28
- as: Component = 'div',
29
- children,
30
- className,
31
- variant,
32
- ...props
33
- }: BoxProps) => {
34
- return (
35
- <Component
36
- className={box({
37
- className,
38
- variant,
39
- })}
40
- {...props}
41
- >
42
- {children}
43
- </Component>
44
- );
45
- };
@@ -1,90 +0,0 @@
1
- import type { ComponentProps } from 'react';
2
- import { cva, type VariantProps } from '../utils/cn';
3
-
4
- const dl = cva({
5
- base: ['grid'],
6
- defaultVariants: {
7
- variant: 'primary',
8
- },
9
- variants: {
10
- variant: {
11
- primary: ['grid-cols-[auto,1fr]', 'gap-x-s', 'gap-y-2xs'], // Two-column grid with gap
12
- unstyled: ['list-none', 'p-0', 'grid-cols-1'], // Unstyled, single column
13
- },
14
- },
15
- });
16
-
17
- const dt = cva({
18
- base: [],
19
- defaultVariants: {
20
- variant: 'primary',
21
- },
22
- variants: {
23
- variant: {
24
- primary: ['uppercase', 'tracking-wide'],
25
- },
26
- },
27
- });
28
-
29
- const dd = cva({
30
- base: ['mb-xs'],
31
- defaultVariants: {
32
- variant: 'primary',
33
- },
34
- variants: {
35
- variant: {
36
- primary: [],
37
- },
38
- },
39
- });
40
-
41
- export interface DefinitionListProps extends ComponentProps<'dl'>, VariantProps<typeof dl> {}
42
-
43
- export interface DtProps extends ComponentProps<'dt'>, VariantProps<typeof dt> {}
44
-
45
- export interface DdProps extends ComponentProps<'dd'>, VariantProps<typeof dd> {}
46
-
47
- export const DefinitionList = (props: DefinitionListProps) => {
48
- const { children, className, variant } = props;
49
-
50
- return (
51
- <dl
52
- className={dl({
53
- className,
54
- variant,
55
- })}
56
- >
57
- {children}
58
- </dl>
59
- );
60
- };
61
-
62
- export const Dt = (props: DtProps) => {
63
- const { children, className, variant } = props;
64
-
65
- return (
66
- <dt
67
- className={dt({
68
- className,
69
- variant,
70
- })}
71
- >
72
- {children}
73
- </dt>
74
- );
75
- };
76
-
77
- export const Dd = (props: DdProps) => {
78
- const { children, className, variant } = props;
79
-
80
- return (
81
- <dd
82
- className={dd({
83
- className,
84
- variant,
85
- })}
86
- >
87
- {children}
88
- </dd>
89
- );
90
- };
@@ -1,340 +0,0 @@
1
- import type { ComponentProps, ElementType } from 'react';
2
- import { cva, type VariantProps } from '../utils/cn';
3
- import { Link } from './link';
4
-
5
- export const priorities = {
6
- high: [],
7
- low: [],
8
- medium: [],
9
- };
10
-
11
- export const paddingValues = {
12
- default: '',
13
- gutter: 'p-grid-gutter',
14
- };
15
-
16
- export const width = {
17
- full: ['col-span-12'],
18
- lg: ['col-span-12', '@xs:col-span-8', '@md:col-span-8', '@xl:col-span-8'],
19
- md: ['col-span-12', '@xs:col-span-6', '@md:col-span-6', '@xl:col-span-6'],
20
- sm: ['col-span-6', '@xs:col-span-6', '@md:col-span-4', '@xl:col-span-4'],
21
- xl: ['col-span-12', '@xs:col-span-8', '@md:col-span-9', '@xl:col-span-10'],
22
- xs: ['col-span-6', '@xs:col-span-4', '@md:col-span-3', '@xl:col-span-2'],
23
- };
24
-
25
- export const height = {
26
- 1: ['row-span-1'],
27
- 2: ['row-span-2'],
28
- 3: ['row-span-3'],
29
- 4: ['row-span-4'],
30
- 5: ['row-span-5'],
31
- 6: ['row-span-6'],
32
- };
33
-
34
- export const themeColors = {
35
- black: [],
36
- blue: [],
37
- coral: [],
38
- cyan: [],
39
- gray: [],
40
- green: [],
41
- lime: [],
42
- neutral: [],
43
- olive: [],
44
- orange: [],
45
- pink: [],
46
- purple: [],
47
- red: [],
48
- teal: [],
49
- unstyled: [],
50
- white: [],
51
- yellow: [],
52
- };
53
-
54
- const item = cva({
55
- base: ['relative'],
56
- compoundVariants: [
57
- {
58
- className: ['bg-gray-300/20', 'black:bg-black/20'],
59
- priority: 'low',
60
- themeColor: 'black',
61
- },
62
- {
63
- className: ['bg-gray-300/50', 'black:bg-black/50'],
64
- priority: 'medium',
65
- themeColor: 'black',
66
- },
67
- {
68
- className: ['bg-gray-300/90', 'black:bg-black/90'],
69
- priority: 'high',
70
- themeColor: 'black',
71
- },
72
- {
73
- className: ['bg-blue-300/20', 'black:bg-blue-500/20'],
74
- priority: 'low',
75
- themeColor: 'blue',
76
- },
77
- {
78
- className: ['bg-blue-300/50', 'black:bg-blue-500/50'],
79
- priority: 'medium',
80
- themeColor: 'blue',
81
- },
82
- {
83
- className: ['bg-blue-300/90', 'black:bg-blue-500/80'],
84
- priority: 'high',
85
- themeColor: 'blue',
86
- },
87
- {
88
- className: ['bg-coral-300/20', 'black:bg-coral-500/20'],
89
- priority: 'low',
90
- themeColor: 'coral',
91
- },
92
- {
93
- className: ['bg-coral-300/50', 'black:bg-coral-500/50'],
94
- priority: 'medium',
95
- themeColor: 'coral',
96
- },
97
- {
98
- className: ['bg-coral-300/90', 'black:bg-coral-500/80'],
99
- priority: 'high',
100
- themeColor: 'coral',
101
- },
102
- {
103
- className: ['bg-cyan-300/20', 'black:bg-cyan-500/20'],
104
- priority: 'low',
105
- themeColor: 'cyan',
106
- },
107
- {
108
- className: ['bg-cyan-300/50', 'black:bg-cyan-500/50'],
109
- priority: 'medium',
110
- themeColor: 'cyan',
111
- },
112
- {
113
- className: ['bg-cyan-300/90', 'black:bg-cyan-500/80'],
114
- priority: 'high',
115
- themeColor: 'cyan',
116
- },
117
- {
118
- className: ['bg-green-300/20', 'black:bg-green-500/20'],
119
- priority: 'low',
120
- themeColor: 'green',
121
- },
122
- {
123
- className: ['bg-green-300/50', 'black:bg-green-500/50'],
124
- priority: 'medium',
125
- themeColor: 'green',
126
- },
127
- {
128
- className: ['bg-green-300/90', 'black:bg-green-500/80'],
129
- priority: 'high',
130
- themeColor: 'green',
131
- },
132
- {
133
- className: ['bg-lime-300/20', 'black:bg-lime-500/20'],
134
- priority: 'low',
135
- themeColor: 'lime',
136
- },
137
- {
138
- className: ['bg-lime-300/50', 'black:bg-lime-500/50'],
139
- priority: 'medium',
140
- themeColor: 'lime',
141
- },
142
- {
143
- className: ['bg-lime-300/90', 'black:bg-lime-500/80'],
144
- priority: 'high',
145
- themeColor: 'lime',
146
- },
147
- {
148
- className: ['bg-gray-100/40', 'black:bg-gray-500/5'],
149
- priority: 'low',
150
- themeColor: 'neutral',
151
- },
152
- {
153
- className: ['bg-gray-200/30', 'black:bg-gray-500/20'],
154
- priority: 'medium',
155
- themeColor: 'neutral',
156
- },
157
- {
158
- className: ['bg-gray-300/70', 'black:bg-gray-500/50'],
159
- priority: 'high',
160
- themeColor: 'neutral',
161
- },
162
- {
163
- className: ['bg-olive-300/20', 'black:bg-olive-500/20'],
164
- priority: 'low',
165
- themeColor: 'olive',
166
- },
167
- {
168
- className: ['bg-olive-300/50', 'black:bg-olive-500/50'],
169
- priority: 'medium',
170
- themeColor: 'olive',
171
- },
172
- {
173
- className: ['bg-olive-300/90', 'black:bg-olive-500/80'],
174
- priority: 'high',
175
- themeColor: 'olive',
176
- },
177
- {
178
- className: ['bg-orange-300/20', 'black:bg-orange-500/20'],
179
- priority: 'low',
180
- themeColor: 'orange',
181
- },
182
- {
183
- className: ['bg-orange-300/50', 'black:bg-orange-500/50'],
184
- priority: 'medium',
185
- themeColor: 'orange',
186
- },
187
- {
188
- className: ['bg-orange-300/90', 'black:bg-orange-500/80'],
189
- priority: 'high',
190
- themeColor: 'orange',
191
- },
192
- {
193
- className: ['bg-pink-300/20', 'black:bg-pink-500/20'],
194
- priority: 'low',
195
- themeColor: 'pink',
196
- },
197
- {
198
- className: ['bg-pink-300/50', 'black:bg-pink-500/50'],
199
- priority: 'medium',
200
- themeColor: 'pink',
201
- },
202
- {
203
- className: ['bg-pink-300/90', 'black:bg-pink-500/80'],
204
- priority: 'high',
205
- themeColor: 'pink',
206
- },
207
- {
208
- className: ['bg-purple-300/20', 'black:bg-purple-500/20'],
209
- priority: 'low',
210
- themeColor: 'purple',
211
- },
212
- {
213
- className: ['bg-purple-300/50', 'black:bg-purple-500/50'],
214
- priority: 'medium',
215
- themeColor: 'purple',
216
- },
217
- {
218
- className: ['bg-purple-300/90', 'black:bg-purple-500/80'],
219
- priority: 'high',
220
- themeColor: 'purple',
221
- },
222
- {
223
- className: ['bg-red-300/20', 'black:bg-red-500/20'],
224
- priority: 'low',
225
- themeColor: 'red',
226
- },
227
- {
228
- className: ['bg-red-300/50', 'black:bg-red-500/50'],
229
- priority: 'medium',
230
- themeColor: 'red',
231
- },
232
- {
233
- className: ['bg-red-300/90', 'black:bg-red-500/80'],
234
- priority: 'high',
235
- themeColor: 'red',
236
- },
237
- {
238
- className: ['bg-teal-300/20', 'black:bg-teal-500/20'],
239
- priority: 'low',
240
- themeColor: 'teal',
241
- },
242
- {
243
- className: ['bg-teal-300/50', 'black:bg-teal-500/50'],
244
- priority: 'medium',
245
- themeColor: 'teal',
246
- },
247
- {
248
- className: ['bg-teal-300/90', 'black:bg-teal-500/80'],
249
- priority: 'high',
250
- themeColor: 'teal',
251
- },
252
- {
253
- className: ['bg-yellow-300/20', 'black:bg-yellow-500/20'],
254
- priority: 'low',
255
- themeColor: 'yellow',
256
- },
257
- {
258
- className: ['bg-yellow-300/50', 'black:bg-yellow-500/50'],
259
- priority: 'medium',
260
- themeColor: 'yellow',
261
- },
262
- {
263
- className: ['bg-yellow-300/90', 'black:bg-yellow-500/80'],
264
- priority: 'high',
265
- themeColor: 'yellow',
266
- },
267
- {
268
- className: ['bg-white/20', 'black:bg-white/20'],
269
- priority: 'low',
270
- themeColor: 'white',
271
- },
272
- {
273
- className: ['bg-white/50', 'black:bg-white/50', 'black:text-black'],
274
- priority: 'medium',
275
- themeColor: 'white',
276
- },
277
- {
278
- className: ['bg-white/90', 'black:bg-white/80', 'black:text-black'],
279
- priority: 'high',
280
- themeColor: 'white',
281
- },
282
- ],
283
- defaultVariants: {
284
- height: 1,
285
- padding: 'default',
286
- priority: 'medium',
287
- themeColor: 'unstyled',
288
- variant: 'primary',
289
- width: 'full',
290
- },
291
- variants: {
292
- height: height,
293
- padding: paddingValues,
294
- priority: priorities,
295
- themeColor: themeColors,
296
- variant: {
297
- primary: [],
298
- reset: ['bg-transparent', 'rounded-none'],
299
- spacer: ['hidden'],
300
- unstyled: [],
301
- },
302
- width: width,
303
- },
304
- });
305
-
306
- export interface ItemProps extends ComponentProps<'div'>, VariantProps<typeof item> {
307
- as?: ElementType;
308
- link?: string;
309
- }
310
-
311
- export const Item = ({
312
- as: Component = 'div',
313
- children,
314
- className,
315
- height,
316
- link,
317
- padding,
318
- priority,
319
- themeColor,
320
- variant,
321
- width,
322
- ...props
323
- }: ItemProps) => {
324
- return (
325
- <Component
326
- className={item({
327
- className,
328
- height,
329
- padding,
330
- priority,
331
- themeColor,
332
- variant,
333
- width,
334
- })}
335
- {...props}
336
- >
337
- {link ? <Link to={link}>{children}</Link> : children}
338
- </Component>
339
- );
340
- };