dash-ui-kit 1.0.93 → 2.0.0-dev

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 (186) hide show
  1. package/README.md +52 -0
  2. package/dist/react/components/accordion/index.cjs.js +193 -0
  3. package/dist/react/components/accordion/index.cjs.js.map +1 -0
  4. package/dist/react/components/accordion/index.esm.js +169 -0
  5. package/dist/react/components/accordion/index.esm.js.map +1 -0
  6. package/dist/react/components/avatar/index.cjs.js +39 -0
  7. package/dist/react/components/avatar/index.cjs.js.map +1 -0
  8. package/dist/react/components/avatar/index.esm.js +34 -0
  9. package/dist/react/components/avatar/index.esm.js.map +1 -0
  10. package/dist/react/components/badge/index.cjs.js +92 -0
  11. package/dist/react/components/badge/index.cjs.js.map +1 -0
  12. package/dist/react/components/badge/index.esm.js +87 -0
  13. package/dist/react/components/badge/index.esm.js.map +1 -0
  14. package/dist/react/components/bigNumber/index.cjs.js +100 -0
  15. package/dist/react/components/bigNumber/index.cjs.js.map +1 -0
  16. package/dist/react/components/bigNumber/index.esm.js +95 -0
  17. package/dist/react/components/bigNumber/index.esm.js.map +1 -0
  18. package/dist/react/components/button/index.cjs.js +535 -0
  19. package/dist/react/components/button/index.cjs.js.map +1 -0
  20. package/dist/react/components/button/index.d.ts +3 -1
  21. package/dist/react/components/button/index.esm.js +530 -0
  22. package/dist/react/components/button/index.esm.js.map +1 -0
  23. package/dist/react/components/copyButton/index.cjs.js +95 -0
  24. package/dist/react/components/copyButton/index.cjs.js.map +1 -0
  25. package/dist/react/components/copyButton/index.esm.js +71 -0
  26. package/dist/react/components/copyButton/index.esm.js.map +1 -0
  27. package/dist/react/components/dashLogo/index.cjs.js +74 -0
  28. package/dist/react/components/dashLogo/index.cjs.js.map +1 -0
  29. package/dist/react/components/dashLogo/index.esm.js +69 -0
  30. package/dist/react/components/dashLogo/index.esm.js.map +1 -0
  31. package/dist/react/components/dateBlock/index.cjs.js +120 -0
  32. package/dist/react/components/dateBlock/index.cjs.js.map +1 -0
  33. package/dist/react/components/dateBlock/index.esm.js +115 -0
  34. package/dist/react/components/dateBlock/index.esm.js.map +1 -0
  35. package/dist/react/components/dialog/index.cjs.js +292 -0
  36. package/dist/react/components/dialog/index.cjs.js.map +1 -0
  37. package/dist/react/components/dialog/index.esm.js +270 -0
  38. package/dist/react/components/dialog/index.esm.js.map +1 -0
  39. package/dist/react/components/heading/index.cjs.js +60 -0
  40. package/dist/react/components/heading/index.cjs.js.map +1 -0
  41. package/dist/react/components/heading/index.esm.js +58 -0
  42. package/dist/react/components/heading/index.esm.js.map +1 -0
  43. package/dist/react/components/icons/index.cjs.js +1173 -0
  44. package/dist/react/components/icons/index.cjs.js.map +1 -0
  45. package/dist/react/components/icons/index.d.ts +2 -0
  46. package/dist/react/components/icons/index.esm.js +1128 -0
  47. package/dist/react/components/icons/index.esm.js.map +1 -0
  48. package/dist/react/components/identifier/index.cjs.js +286 -0
  49. package/dist/react/components/identifier/index.cjs.js.map +1 -0
  50. package/dist/react/components/identifier/index.esm.js +282 -0
  51. package/dist/react/components/identifier/index.esm.js.map +1 -0
  52. package/dist/react/components/index.cjs.js +101 -0
  53. package/dist/react/components/index.cjs.js.map +1 -0
  54. package/dist/react/components/index.d.ts +1 -1
  55. package/dist/react/components/index.esm.js +29 -0
  56. package/dist/react/components/index.esm.js.map +1 -0
  57. package/dist/react/components/input/index.cjs.js +237 -0
  58. package/dist/react/components/input/index.cjs.js.map +1 -0
  59. package/dist/react/components/input/index.esm.js +232 -0
  60. package/dist/react/components/input/index.esm.js.map +1 -0
  61. package/dist/react/components/list/index.cjs.js +49 -0
  62. package/dist/react/components/list/index.cjs.js.map +1 -0
  63. package/dist/react/components/list/index.esm.js +47 -0
  64. package/dist/react/components/list/index.esm.js.map +1 -0
  65. package/dist/react/components/notActive/index.cjs.js +40 -0
  66. package/dist/react/components/notActive/index.cjs.js.map +1 -0
  67. package/dist/react/components/notActive/index.esm.js +38 -0
  68. package/dist/react/components/notActive/index.esm.js.map +1 -0
  69. package/dist/react/components/overlayMenu/index.cjs.js +425 -0
  70. package/dist/react/components/overlayMenu/index.cjs.js.map +1 -0
  71. package/dist/react/components/overlayMenu/index.esm.js +420 -0
  72. package/dist/react/components/overlayMenu/index.esm.js.map +1 -0
  73. package/dist/react/components/overlaySelect/index.cjs.js +345 -0
  74. package/dist/react/components/overlaySelect/index.cjs.js.map +1 -0
  75. package/dist/react/components/overlaySelect/index.esm.js +340 -0
  76. package/dist/react/components/overlaySelect/index.esm.js.map +1 -0
  77. package/dist/react/components/progressStepBar/index.cjs.js +49 -0
  78. package/dist/react/components/progressStepBar/index.cjs.js.map +1 -0
  79. package/dist/react/components/progressStepBar/index.d.ts +2 -1
  80. package/dist/react/components/progressStepBar/index.esm.js +47 -0
  81. package/dist/react/components/progressStepBar/index.esm.js.map +1 -0
  82. package/dist/react/components/select/index.cjs.js +236 -0
  83. package/dist/react/components/select/index.cjs.js.map +1 -0
  84. package/dist/react/components/select/index.esm.js +212 -0
  85. package/dist/react/components/select/index.esm.js.map +1 -0
  86. package/dist/react/components/switch/index.cjs.js +184 -0
  87. package/dist/react/components/switch/index.cjs.js.map +1 -0
  88. package/dist/react/components/switch/index.esm.js +179 -0
  89. package/dist/react/components/switch/index.esm.js.map +1 -0
  90. package/dist/react/components/tabs/index.cjs.js +178 -0
  91. package/dist/react/components/tabs/index.cjs.js.map +1 -0
  92. package/dist/react/components/tabs/index.esm.js +154 -0
  93. package/dist/react/components/tabs/index.esm.js.map +1 -0
  94. package/dist/react/components/text/index.cjs.js +120 -0
  95. package/dist/react/components/text/index.cjs.js.map +1 -0
  96. package/dist/react/components/text/index.esm.js +115 -0
  97. package/dist/react/components/text/index.esm.js.map +1 -0
  98. package/dist/react/components/textarea/index.cjs.js +256 -0
  99. package/dist/react/components/textarea/index.cjs.js.map +1 -0
  100. package/dist/react/components/textarea/index.esm.js +251 -0
  101. package/dist/react/components/textarea/index.esm.js.map +1 -0
  102. package/dist/react/components/timeDelta/index.cjs.js +93 -0
  103. package/dist/react/components/timeDelta/index.cjs.js.map +1 -0
  104. package/dist/react/components/timeDelta/index.d.ts +1 -1
  105. package/dist/react/components/timeDelta/index.esm.js +88 -0
  106. package/dist/react/components/timeDelta/index.esm.js.map +1 -0
  107. package/dist/react/components/transactionStatusIcon/index.cjs.js +59 -0
  108. package/dist/react/components/transactionStatusIcon/index.cjs.js.map +1 -0
  109. package/dist/react/components/transactionStatusIcon/index.esm.js +54 -0
  110. package/dist/react/components/transactionStatusIcon/index.esm.js.map +1 -0
  111. package/dist/react/components/valueCard/index.cjs.js +176 -0
  112. package/dist/react/components/valueCard/index.cjs.js.map +1 -0
  113. package/dist/react/components/valueCard/index.d.ts +1 -1
  114. package/dist/react/components/valueCard/index.esm.js +171 -0
  115. package/dist/react/components/valueCard/index.esm.js.map +1 -0
  116. package/dist/react/contexts/ThemeContext.cjs.js +79 -0
  117. package/dist/react/contexts/ThemeContext.cjs.js.map +1 -0
  118. package/dist/react/contexts/ThemeContext.esm.js +76 -0
  119. package/dist/react/contexts/ThemeContext.esm.js.map +1 -0
  120. package/dist/react/contexts/index.cjs.js +11 -0
  121. package/dist/react/contexts/index.cjs.js.map +1 -0
  122. package/dist/react/contexts/index.esm.js +4 -0
  123. package/dist/react/contexts/index.esm.js.map +1 -0
  124. package/dist/react/hooks/useDebounce.cjs.js +83 -0
  125. package/dist/react/hooks/useDebounce.cjs.js.map +1 -0
  126. package/dist/react/hooks/useDebounce.esm.js +78 -0
  127. package/dist/react/hooks/useDebounce.esm.js.map +1 -0
  128. package/dist/react/index.cjs.js +99 -12811
  129. package/dist/react/index.cjs.js.map +1 -1
  130. package/dist/react/index.d.ts +1 -1
  131. package/dist/react/index.esm.js +27 -12725
  132. package/dist/react/index.esm.js.map +1 -1
  133. package/dist/react/shared/utils/datetime.cjs.js +59 -0
  134. package/dist/react/shared/utils/datetime.cjs.js.map +1 -0
  135. package/dist/react/shared/utils/datetime.esm.js +57 -0
  136. package/dist/react/shared/utils/datetime.esm.js.map +1 -0
  137. package/dist/react/utils/copyToClipboard.cjs.js +31 -0
  138. package/dist/react/utils/copyToClipboard.cjs.js.map +1 -0
  139. package/dist/react/utils/copyToClipboard.esm.js +26 -0
  140. package/dist/react/utils/copyToClipboard.esm.js.map +1 -0
  141. package/dist/react/utils/index.d.ts +1 -1
  142. package/dist/react-native/components/avatar/index.d.ts +26 -0
  143. package/dist/react-native/components/avatar/index.web.d.ts +24 -0
  144. package/dist/react-native/components/badge/index.d.ts +51 -0
  145. package/dist/react-native/components/bigNumber/index.d.ts +26 -0
  146. package/dist/react-native/components/button/index.d.ts +39 -0
  147. package/dist/react-native/components/copyButton/index.d.ts +22 -0
  148. package/dist/react-native/components/copyButton/index.web.d.ts +20 -0
  149. package/dist/react-native/components/dashLogo/index.d.ts +30 -0
  150. package/dist/react-native/components/heading/index.d.ts +25 -0
  151. package/dist/react-native/components/icons/index.d.ts +43 -0
  152. package/dist/react-native/components/identifier/index.d.ts +47 -0
  153. package/dist/react-native/components/index.d.ts +15 -0
  154. package/dist/react-native/components/input/index.d.ts +53 -0
  155. package/dist/react-native/components/notActive/index.d.ts +16 -0
  156. package/dist/react-native/components/tabs/index.d.ts +50 -0
  157. package/dist/react-native/components/text/index.d.ts +28 -0
  158. package/dist/react-native/components/transactionStatusIcon/index.d.ts +24 -0
  159. package/dist/react-native/components/valueCard/index.d.ts +43 -0
  160. package/dist/react-native/hooks/index.d.ts +1 -0
  161. package/dist/react-native/hooks/useDebounce.d.ts +43 -0
  162. package/dist/react-native/index.cjs.js +2856 -0
  163. package/dist/react-native/index.cjs.js.map +1 -0
  164. package/dist/react-native/index.d.ts +4 -0
  165. package/dist/react-native/index.esm.js +2808 -0
  166. package/dist/react-native/index.esm.js.map +1 -0
  167. package/dist/react-native/styles/index.d.ts +11 -0
  168. package/dist/react-native/styles/tokens.d.ts +308 -0
  169. package/dist/react-native/styles/utils.d.ts +65 -0
  170. package/dist/react-native/utils/clipboard.d.ts +27 -0
  171. package/dist/react-native/utils/index.d.ts +2 -0
  172. package/dist/react-native/utils/tw.d.ts +7 -0
  173. package/dist/shared/constants/colors.d.ts +25 -0
  174. package/dist/shared/constants/index.d.ts +2 -0
  175. package/dist/shared/constants/sizes.d.ts +49 -0
  176. package/dist/shared/index.cjs.js +171 -0
  177. package/dist/shared/index.cjs.js.map +1 -0
  178. package/dist/shared/index.d.ts +3 -0
  179. package/dist/shared/index.esm.js +161 -0
  180. package/dist/shared/index.esm.js.map +1 -0
  181. package/dist/shared/types/common.d.ts +33 -0
  182. package/dist/shared/types/index.d.ts +1 -0
  183. package/dist/shared/utils/index.d.ts +1 -0
  184. package/dist/styles.css +1 -1
  185. package/package.json +50 -8
  186. /package/dist/{react → shared}/utils/datetime.d.ts +0 -0
@@ -0,0 +1,154 @@
1
+ "use client";
2
+
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+ import React from 'react';
5
+ import * as RadixTabs from '@radix-ui/react-tabs';
6
+ import { cva } from 'class-variance-authority';
7
+ import { useTheme } from '../../contexts/ThemeContext.esm.js';
8
+
9
+ const tabsRootStyles = cva('flex flex-col w-full', {
10
+ variants: {
11
+ theme: {
12
+ light: '',
13
+ dark: ''
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ theme: 'light'
18
+ }
19
+ });
20
+ const tabsListStyles = cva('flex relative overflow-x-auto scrollbar-hide after:absolute after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:transition-colors', {
21
+ variants: {
22
+ theme: {
23
+ light: 'after:bg-[rgba(12,28,51,0.15)]',
24
+ dark: 'after:bg-gray-600/50'
25
+ }
26
+ },
27
+ defaultVariants: {
28
+ theme: 'light'
29
+ }
30
+ });
31
+ const tabsTriggerStyles = cva(['flex items-center justify-center relative', 'font-dash-main font-light', 'transition-all duration-200 ease-in-out cursor-pointer', 'hover:opacity-80', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500', 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:opacity-50', 'whitespace-nowrap flex-shrink-0', 'after:absolute after:bottom-0 after:left-[-0.25rem] after:w-full after:h-[1px] after:bg-transparent after:transition-colors after:duration-200 after:z-10'], {
32
+ variants: {
33
+ theme: {
34
+ light: '',
35
+ dark: ''
36
+ },
37
+ active: {
38
+ true: '',
39
+ false: ''
40
+ },
41
+ size: {
42
+ sm: 'text-sm leading-[1.25] tracking-[-0.02em] px-0 pr-3 pb-2 after:right-3',
43
+ lg: 'text-xl leading-[1.3] tracking-[-0.025em] px-0 pr-4 pb-3 after:right-4',
44
+ xl: 'text-2xl leading-[1.366] tracking-[-0.03em] px-0 pr-[0.875rem] pb-[10px] after:right-[0.875rem]'
45
+ }
46
+ },
47
+ compoundVariants: [{
48
+ theme: 'light',
49
+ active: true,
50
+ class: 'text-dash-primary-dark-blue [text-shadow:0.2px_0_0_currentColor,_-0.2px_0_0_currentColor] after:!bg-[#4C7EFF]'
51
+ }, {
52
+ theme: 'light',
53
+ active: false,
54
+ class: 'text-[rgba(12,28,51,0.35)]'
55
+ }, {
56
+ theme: 'dark',
57
+ active: true,
58
+ class: 'text-white [text-shadow:0.2px_0_0_currentColor,_-0.2px_0_0_currentColor] after:!bg-[#4C7EFF]'
59
+ }, {
60
+ theme: 'dark',
61
+ active: false,
62
+ class: 'text-gray-400'
63
+ }],
64
+ defaultVariants: {
65
+ theme: 'light',
66
+ active: false,
67
+ size: 'xl'
68
+ }
69
+ });
70
+ const tabsContentStyles = cva('focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500', {
71
+ variants: {
72
+ theme: {
73
+ light: '',
74
+ dark: ''
75
+ },
76
+ size: {
77
+ sm: 'mt-2',
78
+ lg: 'mt-3',
79
+ xl: 'mt-4'
80
+ }
81
+ },
82
+ defaultVariants: {
83
+ theme: 'light',
84
+ size: 'xl'
85
+ }
86
+ });
87
+ /**
88
+ * Tabs component with sleek underline style matching Figma design.
89
+ * Built on radix-ui with light/dark theme support and keyboard navigation.
90
+ */
91
+ const Tabs = ({
92
+ items,
93
+ value,
94
+ defaultValue,
95
+ onValueChange,
96
+ size = 'xl',
97
+ className = '',
98
+ listClassName = '',
99
+ triggerClassName = '',
100
+ contentClassName = ''
101
+ }) => {
102
+ var _a;
103
+ const {
104
+ theme
105
+ } = useTheme();
106
+ const [internalValue, setInternalValue] = React.useState(defaultValue || ((_a = items[0]) === null || _a === void 0 ? void 0 : _a.value) || '');
107
+ // Use controlled value if provided, otherwise use internal state
108
+ const currentValue = value !== undefined ? value : internalValue;
109
+ const handleValueChange = newValue => {
110
+ if (value === undefined) {
111
+ setInternalValue(newValue);
112
+ }
113
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(newValue);
114
+ };
115
+ const rootClasses = tabsRootStyles({
116
+ theme
117
+ }) + (className ? ` ${className}` : '');
118
+ const listClasses = tabsListStyles({
119
+ theme
120
+ }) + (listClassName ? ` ${listClassName}` : '');
121
+ const contentClasses = tabsContentStyles({
122
+ theme,
123
+ size
124
+ }) + (contentClassName ? ` ${contentClassName}` : '');
125
+ return jsxs(RadixTabs.Root, {
126
+ className: rootClasses,
127
+ value: currentValue,
128
+ onValueChange: handleValueChange,
129
+ children: [jsx(RadixTabs.List, {
130
+ className: listClasses,
131
+ children: items.map(item => {
132
+ const isActive = currentValue === item.value;
133
+ const triggerClasses = tabsTriggerStyles({
134
+ theme,
135
+ active: isActive,
136
+ size
137
+ }) + (triggerClassName ? ` ${triggerClassName}` : '');
138
+ return jsx(RadixTabs.Trigger, {
139
+ value: item.value,
140
+ disabled: item.disabled,
141
+ className: triggerClasses,
142
+ children: item.label
143
+ }, item.value);
144
+ })
145
+ }), items.map(item => jsx(RadixTabs.Content, {
146
+ value: item.value,
147
+ className: contentClasses,
148
+ children: item.content
149
+ }, item.value))]
150
+ });
151
+ };
152
+
153
+ export { Tabs, Tabs as default };
154
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/tabs/index.tsx"],"sourcesContent":["import React from 'react'\nimport * as RadixTabs from '@radix-ui/react-tabs'\nimport { cva } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst tabsRootStyles = cva(\n 'flex flex-col w-full',\n {\n variants: {\n theme: {\n light: '',\n dark: ''\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\nconst tabsListStyles = cva(\n 'flex relative overflow-x-auto scrollbar-hide after:absolute after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:transition-colors',\n {\n variants: {\n theme: {\n light: 'after:bg-[rgba(12,28,51,0.15)]',\n dark: 'after:bg-gray-600/50'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\nconst tabsTriggerStyles = cva(\n [\n 'flex items-center justify-center relative',\n 'font-dash-main font-light',\n 'transition-all duration-200 ease-in-out cursor-pointer',\n 'hover:opacity-80',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500',\n 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:opacity-50',\n 'whitespace-nowrap flex-shrink-0',\n 'after:absolute after:bottom-0 after:left-[-0.25rem] after:w-full after:h-[1px] after:bg-transparent after:transition-colors after:duration-200 after:z-10'\n ],\n {\n variants: {\n theme: {\n light: '',\n dark: ''\n },\n active: {\n true: '',\n false: ''\n },\n size: {\n sm: 'text-sm leading-[1.25] tracking-[-0.02em] px-0 pr-3 pb-2 after:right-3',\n lg: 'text-xl leading-[1.3] tracking-[-0.025em] px-0 pr-4 pb-3 after:right-4',\n xl: 'text-2xl leading-[1.366] tracking-[-0.03em] px-0 pr-[0.875rem] pb-[10px] after:right-[0.875rem]'\n }\n },\n compoundVariants: [\n {\n theme: 'light',\n active: true,\n class: 'text-dash-primary-dark-blue [text-shadow:0.2px_0_0_currentColor,_-0.2px_0_0_currentColor] after:!bg-[#4C7EFF]'\n },\n {\n theme: 'light',\n active: false,\n class: 'text-[rgba(12,28,51,0.35)]'\n },\n {\n theme: 'dark',\n active: true,\n class: 'text-white [text-shadow:0.2px_0_0_currentColor,_-0.2px_0_0_currentColor] after:!bg-[#4C7EFF]'\n },\n {\n theme: 'dark',\n active: false,\n class: 'text-gray-400'\n }\n ],\n defaultVariants: {\n theme: 'light',\n active: false,\n size: 'xl'\n }\n }\n)\n\nconst tabsContentStyles = cva(\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500',\n {\n variants: {\n theme: {\n light: '',\n dark: ''\n },\n size: {\n sm: 'mt-2',\n lg: 'mt-3',\n xl: 'mt-4'\n }\n },\n defaultVariants: {\n theme: 'light',\n size: 'xl'\n }\n }\n)\n\nexport interface TabItem {\n /** Unique identifier for the tab */\n value: string\n /** Label text to display */\n label: string\n /** Content to render when tab is active */\n content: React.ReactNode\n /** Whether this tab is disabled */\n disabled?: boolean\n}\n\nexport interface TabsProps {\n /** Array of tab items */\n items: TabItem[]\n /** Currently active tab value (controlled) */\n value?: string\n /** Default active tab value (uncontrolled) */\n defaultValue?: string\n /** Callback when active tab changes */\n onValueChange?: (value: string) => void\n /** Size variant */\n size?: 'sm' | 'lg' | 'xl'\n /** Additional CSS classes */\n className?: string\n /** Additional CSS classes for the tabs list */\n listClassName?: string\n /** Additional CSS classes for tab triggers */\n triggerClassName?: string\n /** Additional CSS classes for tab content */\n contentClassName?: string\n}\n\n/**\n * Tabs component with sleek underline style matching Figma design.\n * Built on radix-ui with light/dark theme support and keyboard navigation.\n */\nexport const Tabs: React.FC<TabsProps> = ({\n items,\n value,\n defaultValue,\n onValueChange,\n size = 'xl',\n className = '',\n listClassName = '',\n triggerClassName = '',\n contentClassName = '',\n}) => {\n const { theme } = useTheme()\n const [internalValue, setInternalValue] = React.useState(defaultValue || items[0]?.value || '')\n \n // Use controlled value if provided, otherwise use internal state\n const currentValue = value !== undefined ? value : internalValue\n \n const handleValueChange = (newValue: string) => {\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onValueChange?.(newValue)\n }\n \n const rootClasses = tabsRootStyles({ theme }) + (className ? ` ${className}` : '')\n const listClasses = tabsListStyles({ theme }) + (listClassName ? ` ${listClassName}` : '')\n const contentClasses = tabsContentStyles({ theme, size }) + (contentClassName ? ` ${contentClassName}` : '')\n\n return (\n <RadixTabs.Root\n className={rootClasses}\n value={currentValue}\n onValueChange={handleValueChange}\n >\n <RadixTabs.List className={listClasses}>\n {items.map((item) => {\n const isActive = currentValue === item.value\n const triggerClasses = tabsTriggerStyles({ \n theme, \n active: isActive,\n size\n }) + (triggerClassName ? ` ${triggerClassName}` : '')\n \n return (\n <RadixTabs.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={triggerClasses}\n >\n {item.label}\n </RadixTabs.Trigger>\n )\n })}\n </RadixTabs.List>\n\n {items.map((item) => (\n <RadixTabs.Content\n key={item.value}\n value={item.value}\n className={contentClasses}\n >\n {item.content}\n </RadixTabs.Content>\n ))}\n </RadixTabs.Root>\n )\n}\n\nexport default Tabs\n\n\n"],"names":["tabsRootStyles","cva","variants","theme","light","dark","defaultVariants","tabsListStyles","tabsTriggerStyles","active","true","false","size","sm","lg","xl","compoundVariants","class","tabsContentStyles","Tabs","items","value","defaultValue","onValueChange","className","listClassName","triggerClassName","contentClassName","useTheme","internalValue","setInternalValue","React","useState","_a","currentValue","undefined","handleValueChange","newValue","rootClasses","listClasses","contentClasses","_jsxs","RadixTabs","Root","children","_jsx","List","map","item","isActive","triggerClasses","Trigger","disabled","label","Content","content"],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ "use client";
2
+
3
+ 'use strict';
4
+
5
+ Object.defineProperty(exports, '__esModule', { value: true });
6
+
7
+ var tslib = require('tslib');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+ var classVarianceAuthority = require('class-variance-authority');
10
+ var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
11
+
12
+ const textStyles = classVarianceAuthority.cva('', {
13
+ variants: {
14
+ reset: {
15
+ false: 'inline whitespace-normal',
16
+ true: ''
17
+ },
18
+ theme: {
19
+ light: 'text-gray-900',
20
+ dark: 'text-gray-100'
21
+ },
22
+ color: {
23
+ default: '',
24
+ blue: '!text-dash-brand',
25
+ 'blue-dark': '!text-dash-brand-dark dark:text-dash-brand-dim',
26
+ red: 'text-red-700'
27
+ },
28
+ size: {
29
+ xs: 'text-[0.625rem]',
30
+ sm: 'text-sm',
31
+ md: 'text-base',
32
+ lg: 'text-lg',
33
+ xl: 'text-xl'
34
+ },
35
+ weight: {
36
+ normal: 'font-normal',
37
+ medium: 'font-medium',
38
+ bold: 'font-bold'
39
+ },
40
+ italic: {
41
+ false: '',
42
+ true: 'italic'
43
+ },
44
+ underline: {
45
+ false: '',
46
+ true: 'underline'
47
+ },
48
+ lineThrough: {
49
+ false: '',
50
+ true: 'line-through'
51
+ },
52
+ transform: {
53
+ none: '',
54
+ uppercase: 'uppercase',
55
+ capitalize: 'capitalize'
56
+ },
57
+ opacity: {
58
+ 0: 'opacity-0',
59
+ 10: 'opacity-10',
60
+ 20: 'opacity-20',
61
+ 30: 'opacity-30',
62
+ 40: 'opacity-40',
63
+ 50: 'opacity-50',
64
+ 60: 'opacity-60',
65
+ 70: 'opacity-70',
66
+ 80: 'opacity-80',
67
+ 90: 'opacity-90',
68
+ 100: 'opacity-100'
69
+ },
70
+ monospace: {
71
+ false: '',
72
+ true: 'font-grotesque'
73
+ },
74
+ dim: {
75
+ false: '',
76
+ true: '!opacity-60'
77
+ }
78
+ },
79
+ defaultVariants: {
80
+ reset: false,
81
+ theme: 'light',
82
+ color: 'default',
83
+ size: 'md',
84
+ weight: 'normal',
85
+ italic: false,
86
+ underline: false,
87
+ lineThrough: false,
88
+ transform: 'none',
89
+ opacity: 100,
90
+ monospace: false,
91
+ dim: false
92
+ }
93
+ });
94
+ /**
95
+ * A versatile text component with size, color, weight, decoration,
96
+ * transform, opacity, monospace, dimming, and theme-aware defaults.
97
+ */
98
+ const Text = _a => {
99
+ var {
100
+ as,
101
+ className = '',
102
+ children
103
+ } = _a,
104
+ variantProps = tslib.__rest(_a, ["as", "className", "children"]);
105
+ const {
106
+ theme
107
+ } = ThemeContext.useTheme();
108
+ const classes = textStyles(Object.assign(Object.assign({}, variantProps), {
109
+ theme
110
+ })) + (className !== '' ? ` ${className}` : '');
111
+ const Component = as !== null && as !== void 0 ? as : 'span';
112
+ return jsxRuntime.jsx(Component, {
113
+ className: classes,
114
+ children: children
115
+ });
116
+ };
117
+
118
+ exports.Text = Text;
119
+ exports.default = Text;
120
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/text/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva, VariantProps } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst textStyles = cva(\n '', {\n variants: {\n reset: {\n false: 'inline whitespace-normal',\n true: ''\n },\n theme: {\n light: 'text-gray-900',\n dark: 'text-gray-100'\n },\n color: {\n default: '',\n blue: '!text-dash-brand',\n 'blue-dark': '!text-dash-brand-dark dark:text-dash-brand-dim',\n red: 'text-red-700'\n },\n size: {\n xs: 'text-[0.625rem]',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n bold: 'font-bold'\n },\n italic: {\n false: '',\n true: 'italic'\n },\n underline: {\n false: '',\n true: 'underline'\n },\n lineThrough: {\n false: '',\n true: 'line-through'\n },\n transform: {\n none: '',\n uppercase: 'uppercase',\n capitalize: 'capitalize'\n },\n opacity: {\n 0: 'opacity-0',\n 10: 'opacity-10',\n 20: 'opacity-20',\n 30: 'opacity-30',\n 40: 'opacity-40',\n 50: 'opacity-50',\n 60: 'opacity-60',\n 70: 'opacity-70',\n 80: 'opacity-80',\n 90: 'opacity-90',\n 100: 'opacity-100'\n },\n monospace: {\n false: '',\n true: 'font-grotesque'\n },\n dim: {\n false: '',\n true: '!opacity-60'\n }\n },\n defaultVariants: {\n reset: false,\n theme: 'light',\n color: 'default',\n size: 'md',\n weight: 'normal',\n italic: false,\n underline: false,\n lineThrough: false,\n transform: 'none',\n opacity: 100,\n monospace: false,\n dim: false\n }\n }\n)\n\ntype TextVariants = Omit<VariantProps<typeof textStyles>, 'theme'>\n\nexport interface TextProps extends TextVariants {\n /** Render as this element or component (e.g. 'h1' or Link). */\n as?: React.ElementType\n /** Additional CSS classes. */\n className?: string\n /** Text children. */\n children?: React.ReactNode\n}\n\n/**\n * A versatile text component with size, color, weight, decoration,\n * transform, opacity, monospace, dimming, and theme-aware defaults.\n */\nexport const Text: React.FC<TextProps> = ({ as, className = '', children, ...variantProps }) => {\n const { theme } = useTheme()\n\n const classes = textStyles({\n ...variantProps,\n theme\n }) + (className !== '' ? ` ${className}` : '')\n\n const Component = as ?? 'span'\n return <Component className={classes}>{children}</Component>\n}\n\nexport default Text\n"],"names":["textStyles","cva","variants","reset","false","true","theme","light","dark","color","default","blue","red","size","xs","sm","md","lg","xl","weight","normal","medium","bold","italic","underline","lineThrough","transform","none","uppercase","capitalize","opacity","monospace","dim","defaultVariants","Text","_a","as","className","children","variantProps","__rest","useTheme","classes","Object","assign","Component","_jsx"],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use client";
2
+
3
+ import { __rest } from 'tslib';
4
+ import { jsx } from 'react/jsx-runtime';
5
+ import { cva } from 'class-variance-authority';
6
+ import { useTheme } from '../../contexts/ThemeContext.esm.js';
7
+
8
+ const textStyles = cva('', {
9
+ variants: {
10
+ reset: {
11
+ false: 'inline whitespace-normal',
12
+ true: ''
13
+ },
14
+ theme: {
15
+ light: 'text-gray-900',
16
+ dark: 'text-gray-100'
17
+ },
18
+ color: {
19
+ default: '',
20
+ blue: '!text-dash-brand',
21
+ 'blue-dark': '!text-dash-brand-dark dark:text-dash-brand-dim',
22
+ red: 'text-red-700'
23
+ },
24
+ size: {
25
+ xs: 'text-[0.625rem]',
26
+ sm: 'text-sm',
27
+ md: 'text-base',
28
+ lg: 'text-lg',
29
+ xl: 'text-xl'
30
+ },
31
+ weight: {
32
+ normal: 'font-normal',
33
+ medium: 'font-medium',
34
+ bold: 'font-bold'
35
+ },
36
+ italic: {
37
+ false: '',
38
+ true: 'italic'
39
+ },
40
+ underline: {
41
+ false: '',
42
+ true: 'underline'
43
+ },
44
+ lineThrough: {
45
+ false: '',
46
+ true: 'line-through'
47
+ },
48
+ transform: {
49
+ none: '',
50
+ uppercase: 'uppercase',
51
+ capitalize: 'capitalize'
52
+ },
53
+ opacity: {
54
+ 0: 'opacity-0',
55
+ 10: 'opacity-10',
56
+ 20: 'opacity-20',
57
+ 30: 'opacity-30',
58
+ 40: 'opacity-40',
59
+ 50: 'opacity-50',
60
+ 60: 'opacity-60',
61
+ 70: 'opacity-70',
62
+ 80: 'opacity-80',
63
+ 90: 'opacity-90',
64
+ 100: 'opacity-100'
65
+ },
66
+ monospace: {
67
+ false: '',
68
+ true: 'font-grotesque'
69
+ },
70
+ dim: {
71
+ false: '',
72
+ true: '!opacity-60'
73
+ }
74
+ },
75
+ defaultVariants: {
76
+ reset: false,
77
+ theme: 'light',
78
+ color: 'default',
79
+ size: 'md',
80
+ weight: 'normal',
81
+ italic: false,
82
+ underline: false,
83
+ lineThrough: false,
84
+ transform: 'none',
85
+ opacity: 100,
86
+ monospace: false,
87
+ dim: false
88
+ }
89
+ });
90
+ /**
91
+ * A versatile text component with size, color, weight, decoration,
92
+ * transform, opacity, monospace, dimming, and theme-aware defaults.
93
+ */
94
+ const Text = _a => {
95
+ var {
96
+ as,
97
+ className = '',
98
+ children
99
+ } = _a,
100
+ variantProps = __rest(_a, ["as", "className", "children"]);
101
+ const {
102
+ theme
103
+ } = useTheme();
104
+ const classes = textStyles(Object.assign(Object.assign({}, variantProps), {
105
+ theme
106
+ })) + (className !== '' ? ` ${className}` : '');
107
+ const Component = as !== null && as !== void 0 ? as : 'span';
108
+ return jsx(Component, {
109
+ className: classes,
110
+ children: children
111
+ });
112
+ };
113
+
114
+ export { Text, Text as default };
115
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/text/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva, VariantProps } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nconst textStyles = cva(\n '', {\n variants: {\n reset: {\n false: 'inline whitespace-normal',\n true: ''\n },\n theme: {\n light: 'text-gray-900',\n dark: 'text-gray-100'\n },\n color: {\n default: '',\n blue: '!text-dash-brand',\n 'blue-dark': '!text-dash-brand-dark dark:text-dash-brand-dim',\n red: 'text-red-700'\n },\n size: {\n xs: 'text-[0.625rem]',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n bold: 'font-bold'\n },\n italic: {\n false: '',\n true: 'italic'\n },\n underline: {\n false: '',\n true: 'underline'\n },\n lineThrough: {\n false: '',\n true: 'line-through'\n },\n transform: {\n none: '',\n uppercase: 'uppercase',\n capitalize: 'capitalize'\n },\n opacity: {\n 0: 'opacity-0',\n 10: 'opacity-10',\n 20: 'opacity-20',\n 30: 'opacity-30',\n 40: 'opacity-40',\n 50: 'opacity-50',\n 60: 'opacity-60',\n 70: 'opacity-70',\n 80: 'opacity-80',\n 90: 'opacity-90',\n 100: 'opacity-100'\n },\n monospace: {\n false: '',\n true: 'font-grotesque'\n },\n dim: {\n false: '',\n true: '!opacity-60'\n }\n },\n defaultVariants: {\n reset: false,\n theme: 'light',\n color: 'default',\n size: 'md',\n weight: 'normal',\n italic: false,\n underline: false,\n lineThrough: false,\n transform: 'none',\n opacity: 100,\n monospace: false,\n dim: false\n }\n }\n)\n\ntype TextVariants = Omit<VariantProps<typeof textStyles>, 'theme'>\n\nexport interface TextProps extends TextVariants {\n /** Render as this element or component (e.g. 'h1' or Link). */\n as?: React.ElementType\n /** Additional CSS classes. */\n className?: string\n /** Text children. */\n children?: React.ReactNode\n}\n\n/**\n * A versatile text component with size, color, weight, decoration,\n * transform, opacity, monospace, dimming, and theme-aware defaults.\n */\nexport const Text: React.FC<TextProps> = ({ as, className = '', children, ...variantProps }) => {\n const { theme } = useTheme()\n\n const classes = textStyles({\n ...variantProps,\n theme\n }) + (className !== '' ? ` ${className}` : '')\n\n const Component = as ?? 'span'\n return <Component className={classes}>{children}</Component>\n}\n\nexport default Text\n"],"names":["textStyles","cva","variants","reset","false","true","theme","light","dark","color","default","blue","red","size","xs","sm","md","lg","xl","weight","normal","medium","bold","italic","underline","lineThrough","transform","none","uppercase","capitalize","opacity","monospace","dim","defaultVariants","Text","_a","as","className","children","variantProps","__rest","useTheme","classes","Object","assign","Component","_jsx"],"mappings":"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"}