@vite-mf-monorepo/ui 0.4.4 → 0.4.6

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 (228) hide show
  1. package/dist/Avatar/Avatar.d.ts +19 -0
  2. package/dist/Avatar/Avatar.js +62 -0
  3. package/dist/Avatar/Avatar.js.map +1 -0
  4. package/dist/Avatar/index.d.ts +3 -0
  5. package/dist/Avatar/index.js +5 -0
  6. package/dist/Avatar/index.js.map +1 -0
  7. package/dist/Badge/Badge.d.ts +23 -0
  8. package/dist/Badge/Badge.js +48 -0
  9. package/dist/Badge/Badge.js.map +1 -0
  10. package/dist/Badge/index.d.ts +4 -0
  11. package/dist/Badge/index.js +5 -0
  12. package/dist/Badge/index.js.map +1 -0
  13. package/dist/Button/Button.utils.d.ts +23 -0
  14. package/dist/{chunk-IUGKH376.js → Button/Button.utils.js} +8 -7
  15. package/dist/Button/Button.utils.js.map +1 -0
  16. package/dist/Button/index.d.ts +6 -26
  17. package/dist/Button/index.js +4 -5
  18. package/dist/Button/index.js.map +1 -1
  19. package/dist/Card/Card.d.ts +11 -0
  20. package/dist/{chunk-RZU2FFBW.js → Card/Card.js} +7 -8
  21. package/dist/Card/Card.js.map +1 -0
  22. package/dist/Card/index.d.ts +3 -11
  23. package/dist/Card/index.js +4 -2
  24. package/dist/Card/index.js.map +1 -1
  25. package/dist/Carousel/Carousel.d.ts +65 -0
  26. package/dist/Carousel/Carousel.js +268 -0
  27. package/dist/Carousel/Carousel.js.map +1 -0
  28. package/dist/Carousel/CarouselCounter.d.ts +17 -0
  29. package/dist/Carousel/CarouselCounter.js +28 -0
  30. package/dist/Carousel/CarouselCounter.js.map +1 -0
  31. package/dist/Carousel/CarouselError.d.ts +8 -0
  32. package/dist/Carousel/CarouselError.js +18 -0
  33. package/dist/Carousel/CarouselError.js.map +1 -0
  34. package/dist/Carousel/CarouselItem.d.ts +16 -0
  35. package/dist/Carousel/CarouselItem.js +28 -0
  36. package/dist/Carousel/CarouselItem.js.map +1 -0
  37. package/dist/Carousel/CarouselLoading.d.ts +25 -0
  38. package/dist/Carousel/CarouselLoading.js +63 -0
  39. package/dist/Carousel/CarouselLoading.js.map +1 -0
  40. package/dist/Carousel/CarouselNavigation.d.ts +31 -0
  41. package/dist/Carousel/CarouselNavigation.js +97 -0
  42. package/dist/Carousel/CarouselNavigation.js.map +1 -0
  43. package/dist/Carousel/CarouselPagination.d.ts +20 -0
  44. package/dist/Carousel/CarouselPagination.js +29 -0
  45. package/dist/Carousel/CarouselPagination.js.map +1 -0
  46. package/dist/Carousel/index.d.ts +8 -0
  47. package/dist/Carousel/index.js +15 -0
  48. package/dist/Carousel/index.js.map +1 -0
  49. package/dist/HeroImage/HeroImage.d.ts +15 -0
  50. package/dist/HeroImage/HeroImage.js +47 -0
  51. package/dist/HeroImage/HeroImage.js.map +1 -0
  52. package/dist/HeroImage/index.d.ts +2 -0
  53. package/dist/HeroImage/index.js +5 -0
  54. package/dist/HeroImage/index.js.map +1 -0
  55. package/dist/Icon/Icon.d.ts +14 -0
  56. package/dist/Icon/Icon.js +204 -0
  57. package/dist/Icon/Icon.js.map +1 -0
  58. package/dist/Icon/index.d.ts +3 -14
  59. package/dist/Icon/index.js +4 -2
  60. package/dist/Icon/index.js.map +1 -1
  61. package/dist/IconButton/IconButton.d.ts +17 -0
  62. package/dist/IconButton/IconButton.js +44 -0
  63. package/dist/IconButton/IconButton.js.map +1 -0
  64. package/dist/IconButton/index.d.ts +4 -0
  65. package/dist/IconButton/index.js +5 -0
  66. package/dist/IconButton/index.js.map +1 -0
  67. package/dist/{MovieCard.utils-D8i4d7qA.d.ts → Image/Image.d.ts} +1 -28
  68. package/dist/Image/Image.js +125 -0
  69. package/dist/Image/Image.js.map +1 -0
  70. package/dist/Image/index.d.ts +3 -0
  71. package/dist/Image/index.js +5 -0
  72. package/dist/Image/index.js.map +1 -0
  73. package/dist/Modal/Modal.d.ts +20 -0
  74. package/dist/Modal/Modal.js +55 -0
  75. package/dist/Modal/Modal.js.map +1 -0
  76. package/dist/Modal/index.d.ts +3 -0
  77. package/dist/Modal/index.js +5 -0
  78. package/dist/Modal/index.js.map +1 -0
  79. package/dist/MovieCard/MovieCard.utils.d.ts +34 -0
  80. package/dist/MovieCard/MovieCard.utils.js +20 -0
  81. package/dist/MovieCard/MovieCard.utils.js.map +1 -0
  82. package/dist/MovieCard/MovieCardContent.d.ts +18 -0
  83. package/dist/MovieCard/MovieCardContent.js +75 -0
  84. package/dist/MovieCard/MovieCardContent.js.map +1 -0
  85. package/dist/MovieCard/index.d.ts +6 -0
  86. package/dist/MovieCard/index.js +5 -0
  87. package/dist/MovieCard/index.js.map +1 -0
  88. package/dist/Rating/CircleRating.d.ts +20 -0
  89. package/dist/Rating/CircleRating.js +75 -0
  90. package/dist/Rating/CircleRating.js.map +1 -0
  91. package/dist/Rating/Rating.d.ts +23 -0
  92. package/dist/Rating/Rating.js +41 -0
  93. package/dist/Rating/Rating.js.map +1 -0
  94. package/dist/Rating/StarsRating.d.ts +18 -0
  95. package/dist/Rating/StarsRating.js +47 -0
  96. package/dist/Rating/StarsRating.js.map +1 -0
  97. package/dist/Rating/index.d.ts +2 -0
  98. package/dist/Rating/index.js +5 -0
  99. package/dist/Rating/index.js.map +1 -0
  100. package/dist/Skeleton/Skeleton.d.ts +23 -0
  101. package/dist/{chunk-FJZK3PY6.js → Skeleton/Skeleton.js} +6 -7
  102. package/dist/Skeleton/Skeleton.js.map +1 -0
  103. package/dist/Skeleton/index.d.ts +3 -0
  104. package/dist/Skeleton/index.js +5 -0
  105. package/dist/Skeleton/index.js.map +1 -0
  106. package/dist/Spinner/Spinner.d.ts +8 -0
  107. package/dist/Spinner/Spinner.js +20 -0
  108. package/dist/Spinner/Spinner.js.map +1 -0
  109. package/dist/Spinner/index.d.ts +2 -0
  110. package/dist/Spinner/index.js +5 -0
  111. package/dist/Spinner/index.js.map +1 -0
  112. package/dist/Tabs/Tabs.d.ts +34 -0
  113. package/dist/Tabs/Tabs.js +47 -0
  114. package/dist/Tabs/Tabs.js.map +1 -0
  115. package/dist/Tabs/TabsContext.d.ts +21 -0
  116. package/dist/Tabs/TabsContext.js +16 -0
  117. package/dist/Tabs/TabsContext.js.map +1 -0
  118. package/dist/Tabs/TabsList.d.ts +7 -0
  119. package/dist/Tabs/TabsList.js +51 -0
  120. package/dist/Tabs/TabsList.js.map +1 -0
  121. package/dist/Tabs/TabsListContext.d.ts +16 -0
  122. package/dist/Tabs/TabsListContext.js +16 -0
  123. package/dist/Tabs/TabsListContext.js.map +1 -0
  124. package/dist/Tabs/TabsPanel.d.ts +17 -0
  125. package/dist/Tabs/TabsPanel.js +26 -0
  126. package/dist/Tabs/TabsPanel.js.map +1 -0
  127. package/dist/Tabs/TabsTrigger.d.ts +12 -0
  128. package/dist/Tabs/TabsTrigger.js +124 -0
  129. package/dist/Tabs/TabsTrigger.js.map +1 -0
  130. package/dist/Tabs/index.d.ts +6 -0
  131. package/dist/Tabs/index.js +5 -0
  132. package/dist/Tabs/index.js.map +1 -0
  133. package/dist/Talent/Talent.d.ts +19 -0
  134. package/dist/Talent/Talent.js +69 -0
  135. package/dist/Talent/Talent.js.map +1 -0
  136. package/dist/Talent/index.d.ts +4 -0
  137. package/dist/Talent/index.js +5 -0
  138. package/dist/Talent/index.js.map +1 -0
  139. package/dist/TrailerCard/TrailerCard.d.ts +15 -0
  140. package/dist/TrailerCard/TrailerCard.js +86 -0
  141. package/dist/TrailerCard/TrailerCard.js.map +1 -0
  142. package/dist/TrailerCard/index.d.ts +2 -0
  143. package/dist/TrailerCard/index.js +5 -0
  144. package/dist/TrailerCard/index.js.map +1 -0
  145. package/dist/Typography/Typography.d.ts +17 -0
  146. package/dist/Typography/Typography.js +55 -0
  147. package/dist/Typography/Typography.js.map +1 -0
  148. package/dist/Typography/index.d.ts +2 -0
  149. package/dist/Typography/index.js +5 -0
  150. package/dist/Typography/index.js.map +1 -0
  151. package/dist/index.d.ts +31 -372
  152. package/dist/index.js +50 -1099
  153. package/dist/index.js.map +1 -1
  154. package/dist/next/Button/Button.d.ts +9 -0
  155. package/dist/{chunk-ZTQU4GMY.js → next/Button/Button.js} +13 -10
  156. package/dist/next/Button/Button.js.map +1 -0
  157. package/dist/next/Button/Button.types.d.ts +26 -0
  158. package/dist/next/Button/Button.types.js +1 -0
  159. package/dist/next/Button/Button.types.js.map +1 -0
  160. package/dist/next/Button/index.d.ts +6 -0
  161. package/dist/next/Button/index.js +5 -0
  162. package/dist/next/Button/index.js.map +1 -0
  163. package/dist/next/HeroImage/HeroImage.d.ts +11 -0
  164. package/dist/next/HeroImage/HeroImage.js +44 -0
  165. package/dist/next/HeroImage/HeroImage.js.map +1 -0
  166. package/dist/next/HeroImage/index.d.ts +2 -0
  167. package/dist/next/HeroImage/index.js +5 -0
  168. package/dist/next/HeroImage/index.js.map +1 -0
  169. package/dist/next/Image/NextImage.d.ts +8 -0
  170. package/dist/next/Image/NextImage.js +84 -0
  171. package/dist/next/Image/NextImage.js.map +1 -0
  172. package/dist/next/Image/NextImage.types.d.ts +13 -0
  173. package/dist/next/Image/NextImage.types.js +1 -0
  174. package/dist/next/Image/NextImage.types.js.map +1 -0
  175. package/dist/next/Image/index.d.ts +5 -0
  176. package/dist/next/Image/index.js +5 -0
  177. package/dist/next/Image/index.js.map +1 -0
  178. package/dist/next/MovieCard/MovieCard.d.ts +9 -0
  179. package/dist/next/MovieCard/MovieCard.js +44 -0
  180. package/dist/next/MovieCard/MovieCard.js.map +1 -0
  181. package/dist/next/MovieCard/MovieCard.types.d.ts +15 -0
  182. package/dist/next/MovieCard/MovieCard.types.js +1 -0
  183. package/dist/next/MovieCard/MovieCard.types.js.map +1 -0
  184. package/dist/next/MovieCard/MovieCardContent.d.ts +19 -0
  185. package/dist/next/MovieCard/MovieCardContent.js +79 -0
  186. package/dist/next/MovieCard/MovieCardContent.js.map +1 -0
  187. package/dist/next/MovieCard/index.d.ts +6 -0
  188. package/dist/next/MovieCard/index.js +5 -0
  189. package/dist/next/MovieCard/index.js.map +1 -0
  190. package/dist/next/index.d.ts +14 -60
  191. package/dist/next/index.js +10 -270
  192. package/dist/next/index.js.map +1 -1
  193. package/dist/react-router/Button/Button.d.ts +9 -0
  194. package/dist/react-router/Button/Button.js +52 -0
  195. package/dist/react-router/Button/Button.js.map +1 -0
  196. package/dist/react-router/Button/Button.types.d.ts +24 -0
  197. package/dist/react-router/Button/Button.types.js +1 -0
  198. package/dist/react-router/Button/Button.types.js.map +1 -0
  199. package/dist/react-router/Button/index.d.ts +6 -0
  200. package/dist/react-router/Button/index.js +5 -0
  201. package/dist/react-router/Button/index.js.map +1 -0
  202. package/dist/react-router/MovieCard/MovieCard.d.ts +9 -0
  203. package/dist/react-router/MovieCard/MovieCard.js +42 -0
  204. package/dist/react-router/MovieCard/MovieCard.js.map +1 -0
  205. package/dist/react-router/MovieCard/MovieCard.types.d.ts +15 -0
  206. package/dist/react-router/MovieCard/MovieCard.types.js +1 -0
  207. package/dist/react-router/MovieCard/MovieCard.types.js.map +1 -0
  208. package/dist/react-router/MovieCard/index.d.ts +6 -0
  209. package/dist/react-router/MovieCard/index.js +5 -0
  210. package/dist/react-router/MovieCard/index.js.map +1 -0
  211. package/dist/react-router/index.d.ts +8 -17
  212. package/dist/react-router/index.js +6 -7
  213. package/dist/react-router/index.js.map +1 -1
  214. package/package.json +1 -1
  215. package/dist/chunk-6DP3KZQG.js +0 -214
  216. package/dist/chunk-6DP3KZQG.js.map +0 -1
  217. package/dist/chunk-6FBMTGXQ.js +0 -119
  218. package/dist/chunk-6FBMTGXQ.js.map +0 -1
  219. package/dist/chunk-7IAJQE27.js +0 -228
  220. package/dist/chunk-7IAJQE27.js.map +0 -1
  221. package/dist/chunk-DGJI4VNO.js +0 -3
  222. package/dist/chunk-DGJI4VNO.js.map +0 -1
  223. package/dist/chunk-FJZK3PY6.js.map +0 -1
  224. package/dist/chunk-IUGKH376.js.map +0 -1
  225. package/dist/chunk-RZU2FFBW.js.map +0 -1
  226. package/dist/chunk-ZTQU4GMY.js.map +0 -1
  227. package/dist/index.css +0 -1313
  228. package/dist/index.css.map +0 -1
@@ -0,0 +1,124 @@
1
+ import { jsxs } from "react/jsx-runtime";
2
+ import clsx from "clsx";
3
+ import { useEffect } from "react";
4
+ import { useTabsContext } from "./TabsContext";
5
+ import { useTabsListContext } from "./TabsListContext";
6
+ function TabsTrigger({
7
+ value,
8
+ icon,
9
+ disabled,
10
+ className,
11
+ children,
12
+ ...rest
13
+ }) {
14
+ const {
15
+ value: activeValue,
16
+ onValueChange,
17
+ variant,
18
+ prefix
19
+ } = useTabsContext();
20
+ const { registerTrigger, unregisterTrigger, getTriggers, isDisabled } = useTabsListContext();
21
+ const isActive = value === activeValue;
22
+ const getTabId = (val) => prefix ? `tab-${prefix}-${val}` : `tab-${val}`;
23
+ const getTabPanelId = (val) => prefix ? `tabpanel-${prefix}-${val}` : `tabpanel-${val}`;
24
+ useEffect(() => {
25
+ registerTrigger(value, disabled);
26
+ return () => {
27
+ unregisterTrigger(value);
28
+ };
29
+ }, [value, disabled, registerTrigger, unregisterTrigger]);
30
+ const handleClick = () => {
31
+ if (!disabled) {
32
+ onValueChange(value);
33
+ }
34
+ };
35
+ const findNextEnabledTab = (triggers, startIndex, direction) => {
36
+ const length = triggers.length;
37
+ let index = startIndex;
38
+ for (let i = 0; i < length; i++) {
39
+ index = (index + direction + length) % length;
40
+ if (!isDisabled(triggers[index])) {
41
+ return index;
42
+ }
43
+ }
44
+ return startIndex;
45
+ };
46
+ const handleKeyDown = (event) => {
47
+ if (disabled) return;
48
+ const triggers = getTriggers();
49
+ const currentIndex = triggers.indexOf(value);
50
+ let newIndex = currentIndex;
51
+ switch (event.key) {
52
+ case "ArrowLeft":
53
+ event.preventDefault();
54
+ newIndex = findNextEnabledTab(triggers, currentIndex, -1);
55
+ break;
56
+ case "ArrowRight":
57
+ event.preventDefault();
58
+ newIndex = findNextEnabledTab(triggers, currentIndex, 1);
59
+ break;
60
+ case "Home":
61
+ event.preventDefault();
62
+ newIndex = 0;
63
+ while (newIndex < triggers.length && isDisabled(triggers[newIndex])) {
64
+ newIndex++;
65
+ }
66
+ break;
67
+ case "End":
68
+ event.preventDefault();
69
+ newIndex = triggers.length - 1;
70
+ while (newIndex >= 0 && isDisabled(triggers[newIndex])) {
71
+ newIndex--;
72
+ }
73
+ break;
74
+ default:
75
+ return;
76
+ }
77
+ const newValue = triggers[newIndex];
78
+ if (newValue && newValue !== value) {
79
+ onValueChange(newValue);
80
+ }
81
+ };
82
+ return /* @__PURE__ */ jsxs(
83
+ "button",
84
+ {
85
+ type: "button",
86
+ role: "tab",
87
+ "aria-selected": isActive ? "true" : "false",
88
+ "aria-controls": getTabPanelId(value),
89
+ id: getTabId(value),
90
+ tabIndex: isActive ? 0 : -1,
91
+ disabled,
92
+ className: clsx(
93
+ "ui:px-4 ui:py-2 ui:font-roboto ui:text-sm ui:font-medium",
94
+ "ui:flex ui:items-center ui:gap-2",
95
+ "ui:transition-colors ui:duration-200",
96
+ "focus-visible:ui:outline-none focus-visible:ui:ring-2 focus-visible:ui:ring-ring focus-visible:ui:ring-offset-2",
97
+ !disabled && "ui:cursor-pointer",
98
+ variant === "underline" && [
99
+ "ui:relative ui:border-b-2 ui:border-transparent ui:-mb-px",
100
+ isActive ? "ui:text-primary ui:border-primary" : "ui:text-foreground hover:ui:text-foreground",
101
+ disabled && "ui:text-muted-foreground/50 ui:cursor-not-allowed hover:ui:text-muted-foreground/50"
102
+ ],
103
+ variant === "pills" && [
104
+ "ui:rounded-md",
105
+ isActive ? "ui:bg-primary ui:shadow-sm" : "ui:text-foreground hover:ui:text-foreground",
106
+ disabled && "ui:text-muted-foreground/50 ui:cursor-not-allowed hover:ui:text-muted-foreground/50"
107
+ ],
108
+ className
109
+ ),
110
+ onClick: handleClick,
111
+ onKeyDown: handleKeyDown,
112
+ ...rest,
113
+ children: [
114
+ icon && icon,
115
+ children
116
+ ]
117
+ }
118
+ );
119
+ }
120
+ var TabsTrigger_default = TabsTrigger;
121
+ export {
122
+ TabsTrigger_default as default
123
+ };
124
+ //# sourceMappingURL=TabsTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Tabs/TabsTrigger.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useEffect } from 'react'\n\nimport { useTabsContext } from './TabsContext'\nimport { useTabsListContext } from './TabsListContext'\n\nimport type { ButtonHTMLAttributes, KeyboardEvent, ReactNode } from 'react'\n\nexport interface TabsTriggerProps\n extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Value that identifies this tab */\n value: string\n /** Optional icon component */\n icon?: ReactNode\n}\n\nfunction TabsTrigger({\n value,\n icon,\n disabled,\n className,\n children,\n ...rest\n}: Readonly<TabsTriggerProps>) {\n const {\n value: activeValue,\n onValueChange,\n variant,\n prefix,\n } = useTabsContext()\n const { registerTrigger, unregisterTrigger, getTriggers, isDisabled } =\n useTabsListContext()\n\n const isActive = value === activeValue\n\n const getTabId = (val: string) =>\n prefix ? `tab-${prefix}-${val}` : `tab-${val}`\n const getTabPanelId = (val: string) =>\n prefix ? `tabpanel-${prefix}-${val}` : `tabpanel-${val}`\n\n useEffect(() => {\n registerTrigger(value, disabled)\n return () => {\n unregisterTrigger(value)\n }\n }, [value, disabled, registerTrigger, unregisterTrigger])\n\n const handleClick = () => {\n if (!disabled) {\n onValueChange(value)\n }\n }\n\n const findNextEnabledTab = (\n triggers: string[],\n startIndex: number,\n direction: 1 | -1\n ): number => {\n const length = triggers.length\n let index = startIndex\n\n for (let i = 0; i < length; i++) {\n index = (index + direction + length) % length\n if (!isDisabled(triggers[index])) {\n return index\n }\n }\n return startIndex\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return\n\n const triggers = getTriggers()\n const currentIndex = triggers.indexOf(value)\n let newIndex = currentIndex\n\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault()\n newIndex = findNextEnabledTab(triggers, currentIndex, -1)\n break\n case 'ArrowRight':\n event.preventDefault()\n newIndex = findNextEnabledTab(triggers, currentIndex, 1)\n break\n case 'Home':\n event.preventDefault()\n newIndex = 0\n while (newIndex < triggers.length && isDisabled(triggers[newIndex])) {\n newIndex++\n }\n break\n case 'End':\n event.preventDefault()\n newIndex = triggers.length - 1\n while (newIndex >= 0 && isDisabled(triggers[newIndex])) {\n newIndex--\n }\n break\n default:\n return\n }\n\n const newValue = triggers[newIndex]\n if (newValue && newValue !== value) {\n onValueChange(newValue)\n }\n }\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive ? 'true' : 'false'}\n aria-controls={getTabPanelId(value)}\n id={getTabId(value)}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n className={clsx(\n 'ui:px-4 ui:py-2 ui:font-roboto ui:text-sm ui:font-medium',\n 'ui:flex ui:items-center ui:gap-2',\n 'ui:transition-colors ui:duration-200',\n 'focus-visible:ui:outline-none focus-visible:ui:ring-2 focus-visible:ui:ring-ring focus-visible:ui:ring-offset-2',\n !disabled && 'ui:cursor-pointer',\n variant === 'underline' && [\n 'ui:relative ui:border-b-2 ui:border-transparent ui:-mb-px',\n isActive\n ? 'ui:text-primary ui:border-primary'\n : 'ui:text-foreground hover:ui:text-foreground',\n disabled &&\n 'ui:text-muted-foreground/50 ui:cursor-not-allowed hover:ui:text-muted-foreground/50',\n ],\n variant === 'pills' && [\n 'ui:rounded-md',\n isActive\n ? 'ui:bg-primary ui:shadow-sm'\n : 'ui:text-foreground hover:ui:text-foreground',\n disabled &&\n 'ui:text-muted-foreground/50 ui:cursor-not-allowed hover:ui:text-muted-foreground/50',\n ],\n className\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {icon && icon}\n {children}\n </button>\n )\n}\n\nexport default TabsTrigger\n"],"mappings":"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","names":[]}
@@ -0,0 +1,6 @@
1
+ export { default as Tabs, TabsProps, TabsVariant } from './Tabs.js';
2
+ export { TabsListProps } from './TabsList.js';
3
+ export { TabsTriggerProps } from './TabsTrigger.js';
4
+ export { TabsPanelProps } from './TabsPanel.js';
5
+ import 'react/jsx-runtime';
6
+ import 'react';
@@ -0,0 +1,5 @@
1
+ import { default as default2 } from "./Tabs";
2
+ export {
3
+ default2 as Tabs
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Tabs/index.ts"],"sourcesContent":["export { default as Tabs } from './Tabs'\nexport type { TabsProps, TabsVariant } from './Tabs'\nexport type { TabsListProps } from './TabsList'\nexport type { TabsTriggerProps } from './TabsTrigger'\nexport type { TabsPanelProps } from './TabsPanel'\n"],"mappings":"AAAA,SAAoB,WAAXA,gBAAuB;","names":["default"]}
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { AvatarSize } from '../Avatar/Avatar.js';
3
+ import { HTMLAttributes } from 'react';
4
+
5
+ interface TalentProps extends HTMLAttributes<HTMLDivElement> {
6
+ /** Full name of the talent (actor, director, writer, etc.) */
7
+ name?: string;
8
+ /** Role or job title (e.g., "Director", "Screenplay", "Character Name") */
9
+ role?: string;
10
+ /** Optional profile image URL */
11
+ imageSrc?: string;
12
+ /** Layout variant - vertical for crew/cast cards, horizontal for lists */
13
+ variant?: 'vertical' | 'horizontal';
14
+ /** Avatar size */
15
+ size?: AvatarSize;
16
+ }
17
+ declare function Talent({ name, role, imageSrc, variant, size, className, ...rest }: Readonly<TalentProps>): react_jsx_runtime.JSX.Element;
18
+
19
+ export { type TalentProps, Talent as default };
@@ -0,0 +1,69 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import clsx from "clsx";
3
+ import { Avatar } from "../Avatar";
4
+ import { Typography } from "../Typography";
5
+ function Talent({
6
+ name,
7
+ role,
8
+ imageSrc,
9
+ variant = "vertical",
10
+ size = "lg",
11
+ className,
12
+ ...rest
13
+ }) {
14
+ return /* @__PURE__ */ jsxs(
15
+ "div",
16
+ {
17
+ className: clsx(
18
+ "ui:flex ui:items-center",
19
+ {
20
+ "ui:flex-col ui:text-center ui:gap-3": variant === "vertical",
21
+ "ui:flex-row ui:gap-4": variant === "horizontal"
22
+ },
23
+ className
24
+ ),
25
+ "data-testid": "talent",
26
+ ...rest,
27
+ children: [
28
+ /* @__PURE__ */ jsx(
29
+ Avatar,
30
+ {
31
+ testId: "avatar",
32
+ src: imageSrc,
33
+ alt: name ?? "Unknown",
34
+ size
35
+ }
36
+ ),
37
+ /* @__PURE__ */ jsxs(
38
+ "div",
39
+ {
40
+ className: clsx({ "ui:flex ui:flex-col": variant === "horizontal" }),
41
+ children: [
42
+ /* @__PURE__ */ jsx(
43
+ Typography,
44
+ {
45
+ variant: "body",
46
+ className: "ui:font-semibold ui:text-foreground",
47
+ children: name ?? "Unknown"
48
+ }
49
+ ),
50
+ /* @__PURE__ */ jsx(
51
+ Typography,
52
+ {
53
+ variant: "caption",
54
+ className: "ui:text-muted-foreground ui:[.media-section:nth-of-type(odd)_&]:text-badge-foreground",
55
+ children: role ?? "N/A"
56
+ }
57
+ )
58
+ ]
59
+ }
60
+ )
61
+ ]
62
+ }
63
+ );
64
+ }
65
+ var Talent_default = Talent;
66
+ export {
67
+ Talent_default as default
68
+ };
69
+ //# sourceMappingURL=Talent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Talent/Talent.tsx"],"sourcesContent":["import clsx from 'clsx'\n\nimport { Avatar } from '../Avatar'\nimport { Typography } from '../Typography'\n\nimport type { AvatarSize } from '../Avatar'\nimport type { HTMLAttributes } from 'react'\n\nexport interface TalentProps extends HTMLAttributes<HTMLDivElement> {\n /** Full name of the talent (actor, director, writer, etc.) */\n name?: string\n /** Role or job title (e.g., \"Director\", \"Screenplay\", \"Character Name\") */\n role?: string\n /** Optional profile image URL */\n imageSrc?: string\n /** Layout variant - vertical for crew/cast cards, horizontal for lists */\n variant?: 'vertical' | 'horizontal'\n /** Avatar size */\n size?: AvatarSize\n}\n\nfunction Talent({\n name,\n role,\n imageSrc,\n variant = 'vertical',\n size = 'lg',\n className,\n ...rest\n}: Readonly<TalentProps>) {\n return (\n <div\n className={clsx(\n 'ui:flex ui:items-center',\n {\n 'ui:flex-col ui:text-center ui:gap-3': variant === 'vertical',\n 'ui:flex-row ui:gap-4': variant === 'horizontal',\n },\n className\n )}\n data-testid=\"talent\"\n {...rest}\n >\n <Avatar\n testId=\"avatar\"\n src={imageSrc}\n alt={name ?? 'Unknown'}\n size={size}\n />\n <div\n className={clsx({ 'ui:flex ui:flex-col': variant === 'horizontal' })}\n >\n <Typography\n variant=\"body\"\n className=\"ui:font-semibold ui:text-foreground\"\n >\n {name ?? 'Unknown'}\n </Typography>\n <Typography\n variant=\"caption\"\n className=\"ui:text-muted-foreground ui:[.media-section:nth-of-type(odd)_&]:text-badge-foreground\"\n >\n {role ?? 'N/A'}\n </Typography>\n </div>\n </div>\n )\n}\n\nexport default Talent\n"],"mappings":"AA2CM,cAMA,YANA;AA3CN,OAAO,UAAU;AAEjB,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAkB3B,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,GAA0B;AACxB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,UACE,uCAAuC,YAAY;AAAA,UACnD,wBAAwB,YAAY;AAAA,QACtC;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAY;AAAA,MACX,GAAG;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,QAAO;AAAA,YACP,KAAK;AAAA,YACL,KAAK,QAAQ;AAAA,YACb;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,KAAK,EAAE,uBAAuB,YAAY,aAAa,CAAC;AAAA,YAEnE;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,WAAU;AAAA,kBAET,kBAAQ;AAAA;AAAA,cACX;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAQ;AAAA,kBACR,WAAU;AAAA,kBAET,kBAAQ;AAAA;AAAA,cACX;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,iBAAQ;","names":[]}
@@ -0,0 +1,4 @@
1
+ export { default as Talent, TalentProps } from './Talent.js';
2
+ import 'react/jsx-runtime';
3
+ import '../Avatar/Avatar.js';
4
+ import 'react';
@@ -0,0 +1,5 @@
1
+ import { default as default2 } from "./Talent";
2
+ export {
3
+ default2 as Talent
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Talent/index.ts"],"sourcesContent":["export { default as Talent } from './Talent'\nexport type { TalentProps } from './Talent'\n"],"mappings":"AAAA,SAAoB,WAAXA,gBAAyB;","names":["default"]}
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface TrailerCardProps {
4
+ /** YouTube video ID */
5
+ videoKey: string;
6
+ /** Trailer title/name */
7
+ title: string;
8
+ /** Video type (Trailer, Clip, Featurette, etc.) */
9
+ type?: string;
10
+ /** Additional className for the card */
11
+ className?: string;
12
+ }
13
+ declare function TrailerCard({ videoKey, title, type, className, }: Readonly<TrailerCardProps>): react_jsx_runtime.JSX.Element;
14
+
15
+ export { type TrailerCardProps, TrailerCard as default };
@@ -0,0 +1,86 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import clsx from "clsx";
3
+ import { useState } from "react";
4
+ import { Button } from "../Button";
5
+ import { Modal } from "../Modal";
6
+ function TrailerCard({
7
+ videoKey,
8
+ title,
9
+ type = "Trailer",
10
+ className
11
+ }) {
12
+ const [isPlaying, setIsPlaying] = useState(false);
13
+ const thumbnailUrl = `https://img.youtube.com/vi/${videoKey}/hqdefault.jpg`;
14
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
15
+ /* @__PURE__ */ jsxs(
16
+ "button",
17
+ {
18
+ className: clsx(
19
+ "ui:group ui:relative ui:flex ui:aspect-video ui:w-full ui:cursor-pointer ui:overflow-hidden ui:rounded-lg ui:bg-gray-200",
20
+ "ui:transition-transform ui:duration-200 hover:ui:scale-[1.02]",
21
+ className
22
+ ),
23
+ onClick: () => {
24
+ setIsPlaying(true);
25
+ },
26
+ tabIndex: 0,
27
+ "aria-label": `Play ${title}`,
28
+ children: [
29
+ /* @__PURE__ */ jsx(
30
+ "img",
31
+ {
32
+ src: thumbnailUrl,
33
+ alt: title,
34
+ className: "ui:h-full ui:w-full ui:object-cover",
35
+ loading: "lazy"
36
+ }
37
+ ),
38
+ /* @__PURE__ */ jsx("div", { className: "ui:absolute ui:inset-0 ui:flex ui:items-center ui:justify-center ui:bg-black/30 ui:opacity-0 ui:transition-opacity ui:duration-200 group-hover:ui:opacity-100", children: /* @__PURE__ */ jsx("div", { className: "ui:flex ui:items-center ui:justify-center ui:h-16 ui:w-16 ui:rounded-full ui:bg-white/90", children: /* @__PURE__ */ jsx("span", { className: "ui:text-2xl ui:ml-1", children: "\u25B6" }) }) }),
39
+ type && /* @__PURE__ */ jsx("div", { className: "ui:absolute ui:bottom-2 ui:left-2 ui:rounded ui:bg-black/80 ui:px-2 ui:py-1 ui:text-xs ui:font-semibold ui:text-white", children: type })
40
+ ]
41
+ }
42
+ ),
43
+ /* @__PURE__ */ jsx(
44
+ Modal,
45
+ {
46
+ isOpen: isPlaying,
47
+ onClose: () => {
48
+ setIsPlaying(false);
49
+ },
50
+ "aria-label": `Play ${title}`,
51
+ children: /* @__PURE__ */ jsxs("div", { className: "ui:flex ui:h-full ui:w-full ui:items-center ui:justify-center ui:p-4", children: [
52
+ /* @__PURE__ */ jsx(
53
+ Button,
54
+ {
55
+ icon: "XMark",
56
+ size: "sm",
57
+ variant: "ghost",
58
+ iconPosition: "left",
59
+ onClick: () => {
60
+ setIsPlaying(false);
61
+ },
62
+ className: "ui:absolute ui:top-4 ui:right-4 ui:text-white hover:ui:bg-white/10 ui:z-10 ui:focus:border-none",
63
+ "aria-label": "Close video",
64
+ children: "Close video"
65
+ }
66
+ ),
67
+ isPlaying && /* @__PURE__ */ jsx(
68
+ "iframe",
69
+ {
70
+ className: "ui:w-full ui:max-w-4xl ui:aspect-video ui:rounded-lg",
71
+ src: `https://www.youtube.com/embed/${videoKey}`,
72
+ title,
73
+ allow: "accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
74
+ allowFullScreen: true
75
+ }
76
+ )
77
+ ] })
78
+ }
79
+ )
80
+ ] });
81
+ }
82
+ var TrailerCard_default = TrailerCard;
83
+ export {
84
+ TrailerCard_default as default
85
+ };
86
+ //# sourceMappingURL=TrailerCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/TrailerCard/TrailerCard.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useState } from 'react'\n\nimport { Button } from '../Button'\nimport { Modal } from '../Modal'\n\nexport interface TrailerCardProps {\n /** YouTube video ID */\n videoKey: string\n /** Trailer title/name */\n title: string\n /** Video type (Trailer, Clip, Featurette, etc.) */\n type?: string\n /** Additional className for the card */\n className?: string\n}\n\nfunction TrailerCard({\n videoKey,\n title,\n type = 'Trailer',\n className,\n}: Readonly<TrailerCardProps>) {\n const [isPlaying, setIsPlaying] = useState(false)\n\n const thumbnailUrl = `https://img.youtube.com/vi/${videoKey}/hqdefault.jpg`\n\n return (\n <>\n {/* Thumbnail card with play button overlay */}\n <button\n className={clsx(\n 'ui:group ui:relative ui:flex ui:aspect-video ui:w-full ui:cursor-pointer ui:overflow-hidden ui:rounded-lg ui:bg-gray-200',\n 'ui:transition-transform ui:duration-200 hover:ui:scale-[1.02]',\n className\n )}\n onClick={() => {\n setIsPlaying(true)\n }}\n tabIndex={0}\n aria-label={`Play ${title}`}\n >\n {/* Thumbnail image */}\n <img\n src={thumbnailUrl}\n alt={title}\n className=\"ui:h-full ui:w-full ui:object-cover\"\n loading=\"lazy\"\n />\n\n {/* Play button overlay */}\n <div className=\"ui:absolute ui:inset-0 ui:flex ui:items-center ui:justify-center ui:bg-black/30 ui:opacity-0 ui:transition-opacity ui:duration-200 group-hover:ui:opacity-100\">\n <div className=\"ui:flex ui:items-center ui:justify-center ui:h-16 ui:w-16 ui:rounded-full ui:bg-white/90\">\n <span className=\"ui:text-2xl ui:ml-1\">▶</span>\n </div>\n </div>\n\n {/* Type badge */}\n {type && (\n <div className=\"ui:absolute ui:bottom-2 ui:left-2 ui:rounded ui:bg-black/80 ui:px-2 ui:py-1 ui:text-xs ui:font-semibold ui:text-white\">\n {type}\n </div>\n )}\n </button>\n\n {/* Modal with YouTube embed */}\n <Modal\n isOpen={isPlaying}\n onClose={() => {\n setIsPlaying(false)\n }}\n aria-label={`Play ${title}`}\n >\n {/* Inner wrapper: flex centering — must NOT be on <dialog> itself to preserve display:none when closed */}\n <div className=\"ui:flex ui:h-full ui:w-full ui:items-center ui:justify-center ui:p-4\">\n {/* Close button */}\n <Button\n icon=\"XMark\"\n size=\"sm\"\n variant=\"ghost\"\n iconPosition=\"left\"\n onClick={() => {\n setIsPlaying(false)\n }}\n className=\"ui:absolute ui:top-4 ui:right-4 ui:text-white hover:ui:bg-white/10 ui:z-10 ui:focus:border-none\"\n aria-label=\"Close video\"\n >\n Close video\n </Button>\n\n {/* Responsive 16:9 iframe container */}\n {isPlaying && (\n <iframe\n className=\"ui:w-full ui:max-w-4xl ui:aspect-video ui:rounded-lg\"\n src={`https://www.youtube.com/embed/${videoKey}`}\n title={title}\n allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n )}\n </div>\n </Modal>\n </>\n )\n}\n\nexport default TrailerCard\n"],"mappings":"AA4BI,mBAeI,KAbF,YAFF;AA5BJ,OAAO,UAAU;AACjB,SAAS,gBAAgB;AAEzB,SAAS,cAAc;AACvB,SAAS,aAAa;AAatB,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AACF,GAA+B;AAC7B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,QAAM,eAAe,8BAA8B,QAAQ;AAE3D,SACE,iCAEE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS,MAAM;AACb,uBAAa,IAAI;AAAA,QACnB;AAAA,QACA,UAAU;AAAA,QACV,cAAY,QAAQ,KAAK;AAAA,QAGzB;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,WAAU;AAAA,cACV,SAAQ;AAAA;AAAA,UACV;AAAA,UAGA,oBAAC,SAAI,WAAU,iKACb,8BAAC,SAAI,WAAU,4FACb,8BAAC,UAAK,WAAU,uBAAsB,oBAAC,GACzC,GACF;AAAA,UAGC,QACC,oBAAC,SAAI,WAAU,yHACZ,gBACH;AAAA;AAAA;AAAA,IAEJ;AAAA,IAGA;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR,SAAS,MAAM;AACb,uBAAa,KAAK;AAAA,QACpB;AAAA,QACA,cAAY,QAAQ,KAAK;AAAA,QAGzB,+BAAC,SAAI,WAAU,wEAEb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,cAAa;AAAA,cACb,SAAS,MAAM;AACb,6BAAa,KAAK;AAAA,cACpB;AAAA,cACA,WAAU;AAAA,cACV,cAAW;AAAA,cACZ;AAAA;AAAA,UAED;AAAA,UAGC,aACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,KAAK,iCAAiC,QAAQ;AAAA,cAC9C;AAAA,cACA,OAAM;AAAA,cACN,iBAAe;AAAA;AAAA,UACjB;AAAA,WAEJ;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,sBAAQ;","names":[]}
@@ -0,0 +1,2 @@
1
+ export { default as TrailerCard, TrailerCardProps } from './TrailerCard.js';
2
+ import 'react/jsx-runtime';
@@ -0,0 +1,5 @@
1
+ import { default as default2 } from "./TrailerCard";
2
+ export {
3
+ default2 as TrailerCard
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/TrailerCard/index.ts"],"sourcesContent":["export { default as TrailerCard } from './TrailerCard'\nexport type { TrailerCardProps } from './TrailerCard'\n"],"mappings":"AAAA,SAAoB,WAAXA,gBAA8B;","names":["default"]}
@@ -0,0 +1,17 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes, ElementType, ReactNode } from 'react';
3
+
4
+ type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'body' | 'body-sm' | 'body-lg' | 'lead' | 'caption' | 'caption-xs' | 'label' | 'muted' | 'blockquote';
5
+ interface TypographyProps extends HTMLAttributes<HTMLElement> {
6
+ /** Visual style variant */
7
+ variant: TypographyVariant;
8
+ /** Override semantic HTML tag */
9
+ as?: ElementType;
10
+ /** Additional CSS classes */
11
+ className?: string;
12
+ /** Content */
13
+ children: ReactNode;
14
+ }
15
+ declare function Typography({ variant, as, className, children, ...rest }: Readonly<TypographyProps>): react.ReactElement<any, string | react.JSXElementConstructor<any>>;
16
+
17
+ export { type TypographyProps, type TypographyVariant, Typography as default };
@@ -0,0 +1,55 @@
1
+ import clsx from "clsx";
2
+ import { createElement } from "react";
3
+ const variantStyles = {
4
+ h1: "ui:font-roboto ui:text-xl ui:sm:text-2xl ui:md:text-3xl ui:lg:text-4xl ui:font-bold ui:leading-tight ui:text-foreground",
5
+ h2: "ui:font-roboto ui:text-lg ui:sm:text-xl ui:md:text-2xl ui:lg:text-3xl ui:font-bold ui:leading-tight ui:text-foreground",
6
+ h3: "ui:font-roboto ui:text-base ui:sm:text-lg ui:md:text-xl ui:lg:text-2xl ui:font-semibold ui:leading-snug ui:text-foreground",
7
+ h4: "ui:font-roboto ui:text-sm ui:sm:text-base ui:md:text-lg ui:lg:text-xl ui:font-semibold ui:leading-snug ui:text-foreground",
8
+ h5: "ui:font-roboto ui:text-sm ui:sm:text-base ui:md:text-lg ui:font-medium ui:leading-normal ui:text-foreground",
9
+ h6: "ui:font-roboto ui:text-xs ui:sm:text-sm ui:md:text-base ui:font-medium ui:leading-normal ui:text-foreground",
10
+ body: "ui:font-inter ui:text-xs ui:sm:text-sm ui:md:text-base ui:leading-relaxed ui:text-foreground",
11
+ "body-sm": "ui:font-inter ui:text-xs ui:sm:text-sm ui:leading-relaxed ui:text-foreground",
12
+ "body-lg": "ui:font-inter ui:text-sm ui:sm:text-base ui:md:text-lg ui:leading-relaxed ui:text-foreground",
13
+ lead: "ui:font-inter ui:text-sm ui:sm:text-base ui:md:text-lg ui:lg:text-xl ui:leading-relaxed ui:text-muted-foreground",
14
+ caption: "ui:font-inter ui:text-xs ui:sm:text-sm ui:text-muted-foreground",
15
+ "caption-xs": "ui:font-inter ui:text-xs ui:text-muted-foreground",
16
+ label: "ui:font-inter ui:text-xs ui:sm:text-sm ui:font-medium ui:text-foreground",
17
+ muted: "ui:font-inter ui:text-xs ui:sm:text-sm ui:text-muted-foreground",
18
+ blockquote: "ui:font-inter ui:text-xs ui:sm:text-sm ui:md:text-base ui:border-l-4 ui:border-border ui:pl-4 ui:italic ui:text-muted-foreground"
19
+ };
20
+ const variantToTag = {
21
+ h1: "h1",
22
+ h2: "h2",
23
+ h3: "h3",
24
+ h4: "h4",
25
+ h5: "h5",
26
+ h6: "h6",
27
+ body: "p",
28
+ "body-sm": "p",
29
+ "body-lg": "p",
30
+ lead: "p",
31
+ caption: "span",
32
+ "caption-xs": "span",
33
+ label: "label",
34
+ muted: "p",
35
+ blockquote: "blockquote"
36
+ };
37
+ function Typography({
38
+ variant,
39
+ as,
40
+ className,
41
+ children,
42
+ ...rest
43
+ }) {
44
+ const Component = as ?? variantToTag[variant];
45
+ return createElement(
46
+ Component,
47
+ { className: clsx(variantStyles[variant], className), ...rest },
48
+ children
49
+ );
50
+ }
51
+ var Typography_default = Typography;
52
+ export {
53
+ Typography_default as default
54
+ };
55
+ //# sourceMappingURL=Typography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Typography/Typography.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { createElement } from 'react'\n\nimport type { ElementType, HTMLAttributes, ReactNode } from 'react'\n\nexport type TypographyVariant =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'body'\n | 'body-sm'\n | 'body-lg'\n | 'lead'\n | 'caption'\n | 'caption-xs'\n | 'label'\n | 'muted'\n | 'blockquote'\n\nexport interface TypographyProps extends HTMLAttributes<HTMLElement> {\n /** Visual style variant */\n variant: TypographyVariant\n /** Override semantic HTML tag */\n as?: ElementType\n /** Additional CSS classes */\n className?: string\n /** Content */\n children: ReactNode\n}\n\nconst variantStyles: Record<TypographyVariant, string> = {\n h1: 'ui:font-roboto ui:text-xl ui:sm:text-2xl ui:md:text-3xl ui:lg:text-4xl ui:font-bold ui:leading-tight ui:text-foreground',\n h2: 'ui:font-roboto ui:text-lg ui:sm:text-xl ui:md:text-2xl ui:lg:text-3xl ui:font-bold ui:leading-tight ui:text-foreground',\n h3: 'ui:font-roboto ui:text-base ui:sm:text-lg ui:md:text-xl ui:lg:text-2xl ui:font-semibold ui:leading-snug ui:text-foreground',\n h4: 'ui:font-roboto ui:text-sm ui:sm:text-base ui:md:text-lg ui:lg:text-xl ui:font-semibold ui:leading-snug ui:text-foreground',\n h5: 'ui:font-roboto ui:text-sm ui:sm:text-base ui:md:text-lg ui:font-medium ui:leading-normal ui:text-foreground',\n h6: 'ui:font-roboto ui:text-xs ui:sm:text-sm ui:md:text-base ui:font-medium ui:leading-normal ui:text-foreground',\n body: 'ui:font-inter ui:text-xs ui:sm:text-sm ui:md:text-base ui:leading-relaxed ui:text-foreground',\n 'body-sm':\n 'ui:font-inter ui:text-xs ui:sm:text-sm ui:leading-relaxed ui:text-foreground',\n 'body-lg':\n 'ui:font-inter ui:text-sm ui:sm:text-base ui:md:text-lg ui:leading-relaxed ui:text-foreground',\n lead: 'ui:font-inter ui:text-sm ui:sm:text-base ui:md:text-lg ui:lg:text-xl ui:leading-relaxed ui:text-muted-foreground',\n caption: 'ui:font-inter ui:text-xs ui:sm:text-sm ui:text-muted-foreground',\n 'caption-xs': 'ui:font-inter ui:text-xs ui:text-muted-foreground',\n label:\n 'ui:font-inter ui:text-xs ui:sm:text-sm ui:font-medium ui:text-foreground',\n muted: 'ui:font-inter ui:text-xs ui:sm:text-sm ui:text-muted-foreground',\n blockquote:\n 'ui:font-inter ui:text-xs ui:sm:text-sm ui:md:text-base ui:border-l-4 ui:border-border ui:pl-4 ui:italic ui:text-muted-foreground',\n}\n\nconst variantToTag: Record<TypographyVariant, ElementType> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n body: 'p',\n 'body-sm': 'p',\n 'body-lg': 'p',\n lead: 'p',\n caption: 'span',\n 'caption-xs': 'span',\n label: 'label',\n muted: 'p',\n blockquote: 'blockquote',\n}\n\nfunction Typography({\n variant,\n as,\n className,\n children,\n ...rest\n}: Readonly<TypographyProps>) {\n const Component = as ?? variantToTag[variant]\n\n return createElement(\n Component,\n { className: clsx(variantStyles[variant], className), ...rest },\n children\n )\n}\n\nexport default Typography\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAgC9B,MAAM,gBAAmD;AAAA,EACvD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WACE;AAAA,EACF,WACE;AAAA,EACF,MAAM;AAAA,EACN,SAAS;AAAA,EACT,cAAc;AAAA,EACd,OACE;AAAA,EACF,OAAO;AAAA,EACP,YACE;AACJ;AAEA,MAAM,eAAuD;AAAA,EAC3D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AAAA,EACT,cAAc;AAAA,EACd,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AACd;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA8B;AAC5B,QAAM,YAAY,MAAM,aAAa,OAAO;AAE5C,SAAO;AAAA,IACL;AAAA,IACA,EAAE,WAAW,KAAK,cAAc,OAAO,GAAG,SAAS,GAAG,GAAG,KAAK;AAAA,IAC9D;AAAA,EACF;AACF;AAEA,IAAO,qBAAQ;","names":[]}
@@ -0,0 +1,2 @@
1
+ export { default as Typography, TypographyProps, TypographyVariant } from './Typography.js';
2
+ import 'react';
@@ -0,0 +1,5 @@
1
+ import { default as default2 } from "./Typography";
2
+ export {
3
+ default2 as Typography
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Typography/index.ts"],"sourcesContent":["export { default as Typography } from './Typography'\nexport type { TypographyProps, TypographyVariant } from './Typography'\n"],"mappings":"AAAA,SAAoB,WAAXA,gBAA6B;","names":["default"]}