@salesmind-ai/design-system 0.3.4 → 0.3.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 (203) hide show
  1. package/dist/{StatsSection-wgd8Vge1.d.cts → StatsSection-Dihy3zml.d.cts} +2 -0
  2. package/dist/{StatsSection-B8iD9L-o.d.ts → StatsSection-MfKKyqL1.d.ts} +2 -0
  3. package/dist/admin/index.cjs +68 -2928
  4. package/dist/admin/index.cjs.map +1 -1
  5. package/dist/admin/index.js +5 -2915
  6. package/dist/admin/index.js.map +1 -1
  7. package/dist/blog/index.cjs +53 -1064
  8. package/dist/blog/index.cjs.map +1 -1
  9. package/dist/blog/index.js +8 -1054
  10. package/dist/blog/index.js.map +1 -1
  11. package/dist/charts/index.cjs +46 -2694
  12. package/dist/charts/index.cjs.map +1 -1
  13. package/dist/charts/index.js +3 -2680
  14. package/dist/charts/index.js.map +1 -1
  15. package/dist/chunk-2GARWEJK.js +17 -0
  16. package/dist/chunk-2GARWEJK.js.map +1 -0
  17. package/dist/chunk-2KQVZ5FB.js +485 -0
  18. package/dist/chunk-2KQVZ5FB.js.map +1 -0
  19. package/dist/chunk-3NKRFUAR.js +37 -0
  20. package/dist/chunk-3NKRFUAR.js.map +1 -0
  21. package/dist/chunk-3TGSIILM.cjs +201 -0
  22. package/dist/chunk-3TGSIILM.cjs.map +1 -0
  23. package/dist/chunk-4GM5BGBN.cjs +801 -0
  24. package/dist/chunk-4GM5BGBN.cjs.map +1 -0
  25. package/dist/chunk-5LGDEZWY.cjs +2434 -0
  26. package/dist/chunk-5LGDEZWY.cjs.map +1 -0
  27. package/dist/chunk-6H4DSTXR.js +786 -0
  28. package/dist/chunk-6H4DSTXR.js.map +1 -0
  29. package/dist/chunk-6HKQ5ILL.cjs +1624 -0
  30. package/dist/chunk-6HKQ5ILL.cjs.map +1 -0
  31. package/dist/chunk-6UNG76Y2.js +153 -0
  32. package/dist/chunk-6UNG76Y2.js.map +1 -0
  33. package/dist/chunk-7PX2AZ6Y.js +39 -0
  34. package/dist/chunk-7PX2AZ6Y.js.map +1 -0
  35. package/dist/chunk-ARC5KXBC.js +187 -0
  36. package/dist/chunk-ARC5KXBC.js.map +1 -0
  37. package/dist/chunk-B6AVAX4F.js +1415 -0
  38. package/dist/chunk-B6AVAX4F.js.map +1 -0
  39. package/dist/chunk-BILT5KD3.js +264 -0
  40. package/dist/chunk-BILT5KD3.js.map +1 -0
  41. package/dist/chunk-C2BCDNAV.js +24 -0
  42. package/dist/chunk-C2BCDNAV.js.map +1 -0
  43. package/dist/chunk-CH42VPWE.cjs +421 -0
  44. package/dist/chunk-CH42VPWE.cjs.map +1 -0
  45. package/dist/chunk-CJ2MKVAF.cjs +46 -0
  46. package/dist/chunk-CJ2MKVAF.cjs.map +1 -0
  47. package/dist/chunk-DP74LUXG.cjs +98 -0
  48. package/dist/chunk-DP74LUXG.cjs.map +1 -0
  49. package/dist/chunk-E7D6EKJ4.cjs +44 -0
  50. package/dist/chunk-E7D6EKJ4.cjs.map +1 -0
  51. package/dist/chunk-ECXBTUH6.cjs +584 -0
  52. package/dist/chunk-ECXBTUH6.cjs.map +1 -0
  53. package/dist/chunk-EFRAP5ES.js +157 -0
  54. package/dist/chunk-EFRAP5ES.js.map +1 -0
  55. package/dist/chunk-EM7JHRYW.cjs +69 -0
  56. package/dist/chunk-EM7JHRYW.cjs.map +1 -0
  57. package/dist/chunk-FAFAP4L5.js +183 -0
  58. package/dist/chunk-FAFAP4L5.js.map +1 -0
  59. package/dist/chunk-H2Y6BSTL.cjs +69 -0
  60. package/dist/chunk-H2Y6BSTL.cjs.map +1 -0
  61. package/dist/chunk-HN4PHABT.js +126 -0
  62. package/dist/chunk-HN4PHABT.js.map +1 -0
  63. package/dist/chunk-HRENHNDJ.js +211 -0
  64. package/dist/chunk-HRENHNDJ.js.map +1 -0
  65. package/dist/chunk-I75BFEYT.cjs +2561 -0
  66. package/dist/chunk-I75BFEYT.cjs.map +1 -0
  67. package/dist/chunk-IFRATNLU.js +562 -0
  68. package/dist/chunk-IFRATNLU.js.map +1 -0
  69. package/dist/chunk-JNASH4OQ.js +1022 -0
  70. package/dist/chunk-JNASH4OQ.js.map +1 -0
  71. package/dist/chunk-JPJN4YBC.js +409 -0
  72. package/dist/chunk-JPJN4YBC.js.map +1 -0
  73. package/dist/chunk-KCKUSU2M.cjs +166 -0
  74. package/dist/chunk-KCKUSU2M.cjs.map +1 -0
  75. package/dist/chunk-KDLH35OI.cjs +1042 -0
  76. package/dist/chunk-KDLH35OI.cjs.map +1 -0
  77. package/dist/chunk-KJ2OXQF4.js +287 -0
  78. package/dist/chunk-KJ2OXQF4.js.map +1 -0
  79. package/dist/chunk-KK5UO2P4.cjs +717 -0
  80. package/dist/chunk-KK5UO2P4.cjs.map +1 -0
  81. package/dist/chunk-KNQEIU7O.cjs +1202 -0
  82. package/dist/chunk-KNQEIU7O.cjs.map +1 -0
  83. package/dist/chunk-KVGSVGRK.cjs +569 -0
  84. package/dist/chunk-KVGSVGRK.cjs.map +1 -0
  85. package/dist/chunk-L352JRV6.cjs +105 -0
  86. package/dist/chunk-L352JRV6.cjs.map +1 -0
  87. package/dist/chunk-LGNMFBLF.cjs +502 -0
  88. package/dist/chunk-LGNMFBLF.cjs.map +1 -0
  89. package/dist/chunk-LJADZITX.cjs +298 -0
  90. package/dist/chunk-LJADZITX.cjs.map +1 -0
  91. package/dist/chunk-LSR7JYVH.cjs +196 -0
  92. package/dist/chunk-LSR7JYVH.cjs.map +1 -0
  93. package/dist/chunk-MDB2WCRQ.cjs +137 -0
  94. package/dist/chunk-MDB2WCRQ.cjs.map +1 -0
  95. package/dist/chunk-MQDEE7HC.cjs +283 -0
  96. package/dist/chunk-MQDEE7HC.cjs.map +1 -0
  97. package/dist/chunk-MQRB634A.cjs +34 -0
  98. package/dist/chunk-MQRB634A.cjs.map +1 -0
  99. package/dist/chunk-MU6GW5ZV.js +2317 -0
  100. package/dist/chunk-MU6GW5ZV.js.map +1 -0
  101. package/dist/chunk-NN3TUHIH.js +28 -0
  102. package/dist/chunk-NN3TUHIH.js.map +1 -0
  103. package/dist/chunk-NT4LBP7D.cjs +111 -0
  104. package/dist/chunk-NT4LBP7D.cjs.map +1 -0
  105. package/dist/chunk-OGKGIXFC.cjs +2162 -0
  106. package/dist/chunk-OGKGIXFC.cjs.map +1 -0
  107. package/dist/chunk-OXNXEQY7.js +2538 -0
  108. package/dist/chunk-OXNXEQY7.js.map +1 -0
  109. package/dist/chunk-P5BOFE5A.js +546 -0
  110. package/dist/chunk-P5BOFE5A.js.map +1 -0
  111. package/dist/chunk-Q2MFGYTE.cjs +1449 -0
  112. package/dist/chunk-Q2MFGYTE.cjs.map +1 -0
  113. package/dist/chunk-Q75DBVDY.cjs +68 -0
  114. package/dist/chunk-Q75DBVDY.cjs.map +1 -0
  115. package/dist/chunk-RQUFZAZ7.js +1608 -0
  116. package/dist/chunk-RQUFZAZ7.js.map +1 -0
  117. package/dist/chunk-SICKWUWB.js +62 -0
  118. package/dist/chunk-SICKWUWB.js.map +1 -0
  119. package/dist/chunk-T343CCH5.js +1190 -0
  120. package/dist/chunk-T343CCH5.js.map +1 -0
  121. package/dist/chunk-T5H5PNLN.js +701 -0
  122. package/dist/chunk-T5H5PNLN.js.map +1 -0
  123. package/dist/chunk-U3LK2GID.js +2122 -0
  124. package/dist/chunk-U3LK2GID.js.map +1 -0
  125. package/dist/chunk-UFAJY2DM.js +62 -0
  126. package/dist/chunk-UFAJY2DM.js.map +1 -0
  127. package/dist/chunk-VC5LMUVQ.cjs +20 -0
  128. package/dist/chunk-VC5LMUVQ.cjs.map +1 -0
  129. package/dist/chunk-VM7WFMKI.cjs +76 -0
  130. package/dist/chunk-VM7WFMKI.cjs.map +1 -0
  131. package/dist/chunk-W2WTP6HS.cjs +233 -0
  132. package/dist/chunk-W2WTP6HS.cjs.map +1 -0
  133. package/dist/chunk-WH7PYHZY.cjs +35 -0
  134. package/dist/chunk-WH7PYHZY.cjs.map +1 -0
  135. package/dist/chunk-XU3OMQ7V.js +98 -0
  136. package/dist/chunk-XU3OMQ7V.js.map +1 -0
  137. package/dist/chunk-XWPDRMZG.js +62 -0
  138. package/dist/chunk-XWPDRMZG.js.map +1 -0
  139. package/dist/chunk-Y3CPKNB7.js +67 -0
  140. package/dist/chunk-Y3CPKNB7.js.map +1 -0
  141. package/dist/chunk-YNVRDD2P.js +98 -0
  142. package/dist/chunk-YNVRDD2P.js.map +1 -0
  143. package/dist/chunk-YSYR54XR.js +92 -0
  144. package/dist/chunk-YSYR54XR.js.map +1 -0
  145. package/dist/chunk-YTYDQBVY.cjs +162 -0
  146. package/dist/chunk-YTYDQBVY.cjs.map +1 -0
  147. package/dist/core/index.cjs +807 -4333
  148. package/dist/core/index.cjs.map +1 -1
  149. package/dist/core/index.js +14 -4130
  150. package/dist/core/index.js.map +1 -1
  151. package/dist/i18n/index.cjs +86 -558
  152. package/dist/i18n/index.cjs.map +1 -1
  153. package/dist/i18n/index.js +1 -544
  154. package/dist/i18n/index.js.map +1 -1
  155. package/dist/index.cjs +1432 -17140
  156. package/dist/index.cjs.map +1 -1
  157. package/dist/index.d.cts +1 -1
  158. package/dist/index.d.ts +1 -1
  159. package/dist/index.js +31 -16785
  160. package/dist/index.js.map +1 -1
  161. package/dist/marketing/index.cjs +142 -3072
  162. package/dist/marketing/index.cjs.map +1 -1
  163. package/dist/marketing/index.js +11 -3042
  164. package/dist/marketing/index.js.map +1 -1
  165. package/dist/motion/index.cjs +26 -1222
  166. package/dist/motion/index.cjs.map +1 -1
  167. package/dist/motion/index.js +2 -1215
  168. package/dist/motion/index.js.map +1 -1
  169. package/dist/nav/index.cjs +101 -1518
  170. package/dist/nav/index.cjs.map +1 -1
  171. package/dist/nav/index.js +4 -1498
  172. package/dist/nav/index.js.map +1 -1
  173. package/dist/report/index.cjs +171 -2403
  174. package/dist/report/index.cjs.map +1 -1
  175. package/dist/report/index.js +3 -2363
  176. package/dist/report/index.js.map +1 -1
  177. package/dist/sections/index.cjs +22 -377
  178. package/dist/sections/index.cjs.map +1 -1
  179. package/dist/sections/index.d.cts +1 -1
  180. package/dist/sections/index.d.ts +1 -1
  181. package/dist/sections/index.js +6 -369
  182. package/dist/sections/index.js.map +1 -1
  183. package/dist/social-proof/index.cjs +53 -1250
  184. package/dist/social-proof/index.cjs.map +1 -1
  185. package/dist/social-proof/index.js +6 -1235
  186. package/dist/social-proof/index.js.map +1 -1
  187. package/dist/theme/index.cjs +38 -565
  188. package/dist/theme/index.cjs.map +1 -1
  189. package/dist/theme/index.js +2 -555
  190. package/dist/theme/index.js.map +1 -1
  191. package/dist/web/client/index.cjs +38 -491
  192. package/dist/web/client/index.cjs.map +1 -1
  193. package/dist/web/client/index.js +4 -483
  194. package/dist/web/client/index.js.map +1 -1
  195. package/dist/web/index.cjs +158 -1346
  196. package/dist/web/index.cjs.map +1 -1
  197. package/dist/web/index.js +9 -1305
  198. package/dist/web/index.js.map +1 -1
  199. package/dist/web/server/index.cjs +26 -563
  200. package/dist/web/server/index.cjs.map +1 -1
  201. package/dist/web/server/index.js +1 -560
  202. package/dist/web/server/index.js.map +1 -1
  203. package/package.json +1 -1
@@ -0,0 +1,126 @@
1
+ import { forwardRef } from 'react';
2
+ import clsx from 'clsx';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ // src/tokens/spacing.ts
6
+ var SPACING = {
7
+ 1: "var(--space-1)",
8
+ 2: "var(--space-2)",
9
+ 3: "var(--space-3)",
10
+ 4: "var(--space-4)",
11
+ 5: "var(--space-5)",
12
+ 6: "var(--space-6)",
13
+ 8: "var(--space-8)",
14
+ 10: "var(--space-10)",
15
+ 12: "var(--space-12)",
16
+ 16: "var(--space-16)",
17
+ 20: "var(--space-20)"
18
+ };
19
+
20
+ // src/components/LayoutPrimitives/utils.ts
21
+ var SPACING_ALIASES = {
22
+ xs: "var(--space-2)",
23
+ sm: "var(--space-3)",
24
+ md: "var(--space-4)",
25
+ lg: "var(--space-6)",
26
+ xl: "var(--space-8)",
27
+ "2xl": "var(--space-12)"
28
+ };
29
+ function resolveSpacing(value) {
30
+ if (value === void 0) return void 0;
31
+ if (typeof value === "number" && SPACING[value]) {
32
+ return SPACING[value];
33
+ }
34
+ if (typeof value === "string" && value in SPACING_ALIASES) {
35
+ return SPACING_ALIASES[value];
36
+ }
37
+ return String(value);
38
+ }
39
+ function extractSpacingStyles(props) {
40
+ const styles = {};
41
+ if (props.m !== void 0) styles.margin = resolveSpacing(props.m);
42
+ if (props.mt !== void 0) styles.marginTop = resolveSpacing(props.mt);
43
+ if (props.mb !== void 0) styles.marginBottom = resolveSpacing(props.mb);
44
+ if (props.ml !== void 0) styles.marginLeft = resolveSpacing(props.ml);
45
+ if (props.mr !== void 0) styles.marginRight = resolveSpacing(props.mr);
46
+ if (props.mx !== void 0) {
47
+ styles.marginLeft = resolveSpacing(props.mx);
48
+ styles.marginRight = resolveSpacing(props.mx);
49
+ }
50
+ if (props.my !== void 0) {
51
+ styles.marginTop = resolveSpacing(props.my);
52
+ styles.marginBottom = resolveSpacing(props.my);
53
+ }
54
+ if (props.p !== void 0) styles.padding = resolveSpacing(props.p);
55
+ if (props.pt !== void 0) styles.paddingTop = resolveSpacing(props.pt);
56
+ if (props.pb !== void 0) styles.paddingBottom = resolveSpacing(props.pb);
57
+ if (props.pl !== void 0) styles.paddingLeft = resolveSpacing(props.pl);
58
+ if (props.pr !== void 0) styles.paddingRight = resolveSpacing(props.pr);
59
+ if (props.px !== void 0) {
60
+ styles.paddingLeft = resolveSpacing(props.px);
61
+ styles.paddingRight = resolveSpacing(props.px);
62
+ }
63
+ if (props.py !== void 0) {
64
+ styles.paddingTop = resolveSpacing(props.py);
65
+ styles.paddingBottom = resolveSpacing(props.py);
66
+ }
67
+ if (props.gap !== void 0) styles.gap = resolveSpacing(props.gap);
68
+ return styles;
69
+ }
70
+ var Box = forwardRef(
71
+ ({ as: Component = "div", className, style, children, ...props }, ref) => {
72
+ const spacingStyles = extractSpacingStyles(props);
73
+ const { m, mt, mb, ml, mr, mx, my, p, pt, pb, pl, pr, px, py, gap, ...domProps } = props;
74
+ return /* @__PURE__ */ jsx(
75
+ Component,
76
+ {
77
+ ref,
78
+ className: clsx("ds-box", className),
79
+ style: { ...spacingStyles, ...style },
80
+ ...domProps,
81
+ children
82
+ }
83
+ );
84
+ }
85
+ );
86
+ Box.displayName = "Box";
87
+ var CONTAINER_SIZE_MAP = {
88
+ sm: "768px",
89
+ // 48rem — max-w-3xl
90
+ md: "1024px",
91
+ // 64rem — max-w-5xl
92
+ lg: "1152px",
93
+ // 72rem — max-w-6xl
94
+ xl: "1280px",
95
+ // 80rem — max-w-7xl
96
+ full: "100%"
97
+ };
98
+ var Container = forwardRef(
99
+ ({ size, fluid, maxWidth, className, style, ...props }, ref) => {
100
+ let resolvedMaxWidth;
101
+ if (fluid) {
102
+ resolvedMaxWidth = "100%";
103
+ } else if (size) {
104
+ resolvedMaxWidth = CONTAINER_SIZE_MAP[size];
105
+ } else {
106
+ resolvedMaxWidth = maxWidth || "var(--container-default-max, 1200px)";
107
+ }
108
+ return /* @__PURE__ */ jsx(
109
+ Box,
110
+ {
111
+ ref,
112
+ className: clsx("ds-container", className),
113
+ style: {
114
+ maxWidth: resolvedMaxWidth,
115
+ ...style
116
+ },
117
+ ...props
118
+ }
119
+ );
120
+ }
121
+ );
122
+ Container.displayName = "Container";
123
+
124
+ export { Box, CONTAINER_SIZE_MAP, Container, SPACING, extractSpacingStyles, resolveSpacing };
125
+ //# sourceMappingURL=out.js.map
126
+ //# sourceMappingURL=chunk-HN4PHABT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tokens/spacing.ts","../src/components/LayoutPrimitives/utils.ts","../src/components/LayoutPrimitives/Box.tsx","../src/components/LayoutPrimitives/Container.tsx"],"names":["forwardRef","clsx","jsx"],"mappings":"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","sourcesContent":["export const SPACING = {\n 1: 'var(--space-1)',\n 2: 'var(--space-2)',\n 3: 'var(--space-3)',\n 4: 'var(--space-4)',\n 5: 'var(--space-5)',\n 6: 'var(--space-6)',\n 8: 'var(--space-8)',\n 10: 'var(--space-10)',\n 12: 'var(--space-12)',\n 16: 'var(--space-16)',\n 20: 'var(--space-20)',\n} as const;\n\nexport type SpacingToken = keyof typeof SPACING;\n","import { CSSProperties } from 'react';\nimport { SPACING } from '../../tokens/spacing';\n\ntype SpacingValue = keyof typeof SPACING | number | string;\n\n/**\n * Named spacing aliases that map semantic sizes to DS space tokens.\n * Allows consumers to pass gap=\"lg\" instead of gap={6}.\n */\nconst SPACING_ALIASES: Record<string, string> = {\n xs: 'var(--space-2)',\n sm: 'var(--space-3)',\n md: 'var(--space-4)',\n lg: 'var(--space-6)',\n xl: 'var(--space-8)',\n '2xl': 'var(--space-12)',\n};\n\nexport function resolveSpacing(value: SpacingValue | undefined): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'number' && SPACING[value as keyof typeof SPACING]) {\n return SPACING[value as keyof typeof SPACING];\n }\n if (typeof value === 'string' && value in SPACING_ALIASES) {\n return SPACING_ALIASES[value];\n }\n return String(value);\n}\n\nexport interface SpacingProps {\n m?: SpacingValue;\n mt?: SpacingValue;\n mb?: SpacingValue;\n ml?: SpacingValue;\n mr?: SpacingValue;\n mx?: SpacingValue;\n my?: SpacingValue;\n p?: SpacingValue;\n pt?: SpacingValue;\n pb?: SpacingValue;\n pl?: SpacingValue;\n pr?: SpacingValue;\n px?: SpacingValue;\n py?: SpacingValue;\n gap?: SpacingValue;\n}\n\nexport function extractSpacingStyles(props: SpacingProps): CSSProperties {\n const styles: CSSProperties = {};\n\n if (props.m !== undefined) styles.margin = resolveSpacing(props.m);\n if (props.mt !== undefined) styles.marginTop = resolveSpacing(props.mt);\n if (props.mb !== undefined) styles.marginBottom = resolveSpacing(props.mb);\n if (props.ml !== undefined) styles.marginLeft = resolveSpacing(props.ml);\n if (props.mr !== undefined) styles.marginRight = resolveSpacing(props.mr);\n if (props.mx !== undefined) {\n styles.marginLeft = resolveSpacing(props.mx);\n styles.marginRight = resolveSpacing(props.mx);\n }\n if (props.my !== undefined) {\n styles.marginTop = resolveSpacing(props.my);\n styles.marginBottom = resolveSpacing(props.my);\n }\n\n if (props.p !== undefined) styles.padding = resolveSpacing(props.p);\n if (props.pt !== undefined) styles.paddingTop = resolveSpacing(props.pt);\n if (props.pb !== undefined) styles.paddingBottom = resolveSpacing(props.pb);\n if (props.pl !== undefined) styles.paddingLeft = resolveSpacing(props.pl);\n if (props.pr !== undefined) styles.paddingRight = resolveSpacing(props.pr);\n if (props.px !== undefined) {\n styles.paddingLeft = resolveSpacing(props.px);\n styles.paddingRight = resolveSpacing(props.px);\n }\n if (props.py !== undefined) {\n styles.paddingTop = resolveSpacing(props.py);\n styles.paddingBottom = resolveSpacing(props.py);\n }\n\n if (props.gap !== undefined) styles.gap = resolveSpacing(props.gap);\n\n return styles;\n}\n","import { ElementType, HTMLAttributes, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { SpacingProps, extractSpacingStyles } from './utils';\nimport './LayoutPrimitives.css';\n\nexport interface BoxProps extends HTMLAttributes<HTMLElement>, SpacingProps {\n as?: ElementType;\n}\n\nexport const Box = forwardRef<HTMLElement, BoxProps>(\n ({ as: Component = 'div', className, style, children, ...props }, ref) => {\n const spacingStyles = extractSpacingStyles(props);\n\n // Filter out spacing props from passing to DOM\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { m, mt, mb, ml, mr, mx, my, p, pt, pb, pl, pr, px, py, gap, ...domProps } = props;\n\n return (\n <Component\n ref={ref}\n className={clsx('ds-box', className)}\n style={{ ...spacingStyles, ...style }}\n {...domProps}\n >\n {children}\n </Component>\n );\n },\n);\n\nBox.displayName = 'Box';\n","import { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { Box, BoxProps } from './Box';\n\nexport type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Maps named sizes to max-width values.\n * Aligns with common web breakpoints (Tailwind `max-w-*` scale).\n */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CONTAINER_SIZE_MAP: Record<ContainerSize, string> = {\n sm: '768px', // 48rem — max-w-3xl\n md: '1024px', // 64rem — max-w-5xl\n lg: '1152px', // 72rem — max-w-6xl\n xl: '1280px', // 80rem — max-w-7xl\n full: '100%',\n};\n\nexport interface ContainerProps extends BoxProps {\n /**\n * Named size preset. Overrides `maxWidth` when set.\n * @example <Container size=\"lg\">…</Container>\n */\n size?: ContainerSize;\n /** Pass `true` to stretch to 100% width (same as `size=\"full\"`). */\n fluid?: boolean;\n /** Custom max-width value. Ignored when `size` or `fluid` is set. */\n maxWidth?: number | string;\n}\n\nexport const Container = forwardRef<HTMLElement, ContainerProps>(\n ({ size, fluid, maxWidth, className, style, ...props }, ref) => {\n let resolvedMaxWidth: string | number;\n if (fluid) {\n resolvedMaxWidth = '100%';\n } else if (size) {\n resolvedMaxWidth = CONTAINER_SIZE_MAP[size];\n } else {\n resolvedMaxWidth = maxWidth || 'var(--container-default-max, 1200px)';\n }\n\n return (\n <Box\n ref={ref}\n className={clsx('ds-container', className)}\n style={{\n maxWidth: resolvedMaxWidth,\n ...style,\n }}\n {...props}\n />\n );\n },\n);\n\nContainer.displayName = 'Container';\n"]}
@@ -0,0 +1,211 @@
1
+ import React2 from 'react';
2
+ import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
3
+ import clsx from 'clsx';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+ import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
6
+
7
+ // src/components/Dialog/Dialog.tsx
8
+ var Dialog = Dialog$1.Root;
9
+ var DialogTrigger = Dialog$1.Trigger;
10
+ var DialogClose = Dialog$1.Close;
11
+ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Dialog$1.Title, { ref, className: clsx("ds-dialog__title", className), ...props }));
12
+ DialogTitle.displayName = "DialogTitle";
13
+ var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
14
+ Dialog$1.Description,
15
+ {
16
+ ref,
17
+ className: clsx("ds-dialog__description", className),
18
+ ...props
19
+ }
20
+ ));
21
+ DialogDescription.displayName = "DialogDescription";
22
+ var DialogContent = React2.forwardRef(
23
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(Dialog$1.Portal, { children: [
24
+ /* @__PURE__ */ jsx(Dialog$1.Backdrop, { className: "ds-dialog__backdrop" }),
25
+ /* @__PURE__ */ jsx(Dialog$1.Popup, { ref, className: clsx("ds-dialog__content", className), ...props, children })
26
+ ] })
27
+ );
28
+ DialogContent.displayName = "DialogContent";
29
+ var DialogHeader = React2.forwardRef(
30
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: clsx("ds-dialog__header", className), ...props })
31
+ );
32
+ DialogHeader.displayName = "DialogHeader";
33
+ var DialogFooter = React2.forwardRef(
34
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: clsx("ds-dialog__footer", className), ...props })
35
+ );
36
+ DialogFooter.displayName = "DialogFooter";
37
+ var ToggleGroupContext = React2.createContext({
38
+ type: "single",
39
+ value: [],
40
+ onItemToggle: () => {
41
+ }
42
+ });
43
+ var ToggleGroup = React2.forwardRef(
44
+ ({ className, type, value, onValueChange, children, ...props }, ref) => {
45
+ const normalizedValue = React2.useMemo(() => {
46
+ if (value === void 0) return [];
47
+ return Array.isArray(value) ? value : [value];
48
+ }, [value]);
49
+ const onItemToggle = React2.useCallback(
50
+ (itemValue) => {
51
+ if (type === "single") {
52
+ const next = normalizedValue.includes(itemValue) ? "" : itemValue;
53
+ onValueChange?.(next);
54
+ } else {
55
+ const next = normalizedValue.includes(itemValue) ? normalizedValue.filter((v) => v !== itemValue) : [...normalizedValue, itemValue];
56
+ onValueChange?.(next);
57
+ }
58
+ },
59
+ [type, normalizedValue, onValueChange]
60
+ );
61
+ const ctx = React2.useMemo(
62
+ () => ({ type, value: normalizedValue, onItemToggle }),
63
+ [type, normalizedValue, onItemToggle]
64
+ );
65
+ return /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
66
+ "div",
67
+ {
68
+ ref,
69
+ role: "group",
70
+ className: clsx("ds-toggle-group", className),
71
+ ...props,
72
+ children
73
+ }
74
+ ) });
75
+ }
76
+ );
77
+ ToggleGroup.displayName = "ToggleGroup";
78
+ var ToggleGroupItem = React2.forwardRef(({ className, value, children, onClick, ...props }, ref) => {
79
+ const ctx = React2.useContext(ToggleGroupContext);
80
+ const pressed = ctx.value.includes(value);
81
+ const handleClick = (e) => {
82
+ ctx.onItemToggle(value);
83
+ onClick?.(e);
84
+ };
85
+ return /* @__PURE__ */ jsx(
86
+ "button",
87
+ {
88
+ ref,
89
+ type: "button",
90
+ "aria-pressed": pressed,
91
+ className: clsx(
92
+ "ds-toggle-group__item",
93
+ pressed && "ds-toggle-group__item--pressed",
94
+ className
95
+ ),
96
+ onClick: handleClick,
97
+ ...props,
98
+ children
99
+ }
100
+ );
101
+ });
102
+ ToggleGroupItem.displayName = "ToggleGroupItem";
103
+ var Slider = React2.forwardRef(
104
+ ({
105
+ className,
106
+ value: controlledValue,
107
+ defaultValue = 50,
108
+ min = 0,
109
+ max = 100,
110
+ step = 1,
111
+ onValueChange,
112
+ disabled = false,
113
+ ...props
114
+ }, ref) => {
115
+ const [uncontrolledValue, setUncontrolledValue] = React2.useState(defaultValue);
116
+ const isControlled = controlledValue !== void 0;
117
+ const value = isControlled ? controlledValue : uncontrolledValue;
118
+ const handleChange = (e) => {
119
+ const next = Number(e.target.value);
120
+ if (!isControlled) {
121
+ setUncontrolledValue(next);
122
+ }
123
+ onValueChange?.(next);
124
+ };
125
+ const percentage = (value - min) / (max - min) * 100;
126
+ return /* @__PURE__ */ jsxs(
127
+ "div",
128
+ {
129
+ ref,
130
+ className: clsx("ds-slider", disabled && "ds-slider--disabled", className),
131
+ ...props,
132
+ children: [
133
+ /* @__PURE__ */ jsx("div", { className: "ds-slider__track", children: /* @__PURE__ */ jsx(
134
+ "div",
135
+ {
136
+ className: "ds-slider__range",
137
+ style: { width: `${percentage}%` }
138
+ }
139
+ ) }),
140
+ /* @__PURE__ */ jsx(
141
+ "input",
142
+ {
143
+ type: "range",
144
+ className: "ds-slider__thumb",
145
+ role: "slider",
146
+ min,
147
+ max,
148
+ step,
149
+ value,
150
+ disabled,
151
+ onChange: handleChange,
152
+ "aria-valuemin": min,
153
+ "aria-valuemax": max,
154
+ "aria-valuenow": value
155
+ }
156
+ )
157
+ ]
158
+ }
159
+ );
160
+ }
161
+ );
162
+ Slider.displayName = "Slider";
163
+ var Tabs = React2.forwardRef(
164
+ ({ className, orientation = "horizontal", ...props }, ref) => {
165
+ return /* @__PURE__ */ jsx(
166
+ Tabs$1.Root,
167
+ {
168
+ ref,
169
+ className: clsx("ds-tabs", `ds-tabs--${orientation}`, className),
170
+ orientation,
171
+ ...props
172
+ }
173
+ );
174
+ }
175
+ );
176
+ Tabs.displayName = "Tabs";
177
+ var TabsList = React2.forwardRef(
178
+ ({ className, ...props }, ref) => {
179
+ return /* @__PURE__ */ jsx(Tabs$1.List, { ref, className: clsx("ds-tabs__list", className), ...props });
180
+ }
181
+ );
182
+ TabsList.displayName = "TabsList";
183
+ var TabsTrigger = React2.forwardRef(
184
+ ({ className, children, ...props }, ref) => {
185
+ return /* @__PURE__ */ jsx(Tabs$1.Tab, { ref, className: clsx("ds-tabs__trigger", className), ...props, children });
186
+ }
187
+ );
188
+ TabsTrigger.displayName = "TabsTrigger";
189
+ var TabsContent = React2.forwardRef(
190
+ ({ className, ...props }, ref) => {
191
+ return /* @__PURE__ */ jsx(Tabs$1.Panel, { ref, className: clsx("ds-tabs__content", className), ...props });
192
+ }
193
+ );
194
+ TabsContent.displayName = "TabsContent";
195
+ var Badge = React2.forwardRef(
196
+ ({ className, variant = "default", ...props }, ref) => {
197
+ return /* @__PURE__ */ jsx(
198
+ "span",
199
+ {
200
+ ref,
201
+ className: clsx("ds-badge", `ds-badge--${variant}`, className),
202
+ ...props
203
+ }
204
+ );
205
+ }
206
+ );
207
+ Badge.displayName = "Badge";
208
+
209
+ export { Badge, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Slider, Tabs, TabsContent, TabsList, TabsTrigger, ToggleGroup, ToggleGroupItem };
210
+ //# sourceMappingURL=out.js.map
211
+ //# sourceMappingURL=chunk-HRENHNDJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Dialog/Dialog.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Slider/Slider.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Badge/Badge.tsx"],"names":["React","clsx","jsx","jsxs"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport clsx from 'clsx';\nimport './Dialog.css';\n\nexport const Dialog = BaseDialog.Root;\nexport const DialogTrigger = BaseDialog.Trigger;\nexport const DialogClose = BaseDialog.Close;\nexport const DialogTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <BaseDialog.Title ref={ref} className={clsx('ds-dialog__title', className)} {...props} />\n));\nDialogTitle.displayName = 'DialogTitle';\n\nexport const DialogDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <BaseDialog.Description\n ref={ref}\n className={clsx('ds-dialog__description', className)}\n {...props}\n />\n));\nDialogDescription.displayName = 'DialogDescription';\n\nexport const DialogContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className=\"ds-dialog__backdrop\" />\n <BaseDialog.Popup ref={ref} className={clsx('ds-dialog__content', className)} {...props}>\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n ),\n);\nDialogContent.displayName = 'DialogContent';\n\n/**\n * Semantic header section for a dialog, typically containing\n * DialogTitle and DialogDescription.\n */\nexport const DialogHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-dialog__header', className)} {...props} />\n ),\n);\nDialogHeader.displayName = 'DialogHeader';\n\n/**\n * Footer section for dialog actions (confirm, cancel, etc.).\n * Renders children in a right-aligned flex row with standard gap.\n */\nexport const DialogFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={clsx('ds-dialog__footer', className)} {...props} />\n ),\n);\nDialogFooter.displayName = 'DialogFooter';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './ToggleGroup.css';\n\n/* ==========================================================================\n Context\n ========================================================================== */\n\ninterface ToggleGroupContextValue {\n type: 'single' | 'multiple';\n value: string[];\n onItemToggle: (itemValue: string) => void;\n}\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue>({\n type: 'single',\n value: [],\n onItemToggle: () => {},\n});\n\n/* ==========================================================================\n ToggleGroup (div — role=\"group\")\n ========================================================================== */\n\nexport interface ToggleGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether a single or multiple items can be pressed at once. */\n type: 'single' | 'multiple';\n /** The controlled value(s). String for single, string[] for multiple. */\n value?: string | string[];\n /** Callback when value changes. */\n onValueChange?: (value: string | string[]) => void;\n}\n\n/**\n * A group of toggle buttons where one or more can be selected.\n *\n * @example\n * <ToggleGroup type=\"single\" value=\"center\" onValueChange={setValue}>\n * <ToggleGroupItem value=\"left\">Left</ToggleGroupItem>\n * <ToggleGroupItem value=\"center\">Center</ToggleGroupItem>\n * <ToggleGroupItem value=\"right\">Right</ToggleGroupItem>\n * </ToggleGroup>\n */\nexport const ToggleGroup = React.forwardRef<HTMLDivElement, ToggleGroupProps>(\n ({ className, type, value, onValueChange, children, ...props }, ref) => {\n const normalizedValue = React.useMemo<string[]>(() => {\n if (value === undefined) return [];\n return Array.isArray(value) ? value : [value];\n }, [value]);\n\n const onItemToggle = React.useCallback(\n (itemValue: string) => {\n if (type === 'single') {\n const next = normalizedValue.includes(itemValue) ? '' : itemValue;\n onValueChange?.(next);\n } else {\n const next = normalizedValue.includes(itemValue)\n ? normalizedValue.filter((v) => v !== itemValue)\n : [...normalizedValue, itemValue];\n onValueChange?.(next);\n }\n },\n [type, normalizedValue, onValueChange],\n );\n\n const ctx = React.useMemo<ToggleGroupContextValue>(\n () => ({ type, value: normalizedValue, onItemToggle }),\n [type, normalizedValue, onItemToggle],\n );\n\n return (\n <ToggleGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={clsx('ds-toggle-group', className)}\n {...props}\n >\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n },\n);\n\nToggleGroup.displayName = 'ToggleGroup';\n\n/* ==========================================================================\n ToggleGroupItem (button)\n ========================================================================== */\n\nexport interface ToggleGroupItemProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** The value this item represents. */\n value: string;\n}\n\nexport const ToggleGroupItem = React.forwardRef<\n HTMLButtonElement,\n ToggleGroupItemProps\n>(({ className, value, children, onClick, ...props }, ref) => {\n const ctx = React.useContext(ToggleGroupContext);\n const pressed = ctx.value.includes(value);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n ctx.onItemToggle(value);\n onClick?.(e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={pressed}\n className={clsx(\n 'ds-toggle-group__item',\n pressed && 'ds-toggle-group__item--pressed',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\n\nToggleGroupItem.displayName = 'ToggleGroupItem';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './Slider.css';\n\nexport interface SliderProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Current value (controlled). */\n value?: number;\n /** Default value (uncontrolled). */\n defaultValue?: number;\n /** Minimum value. */\n min?: number;\n /** Maximum value. */\n max?: number;\n /** Step increment. */\n step?: number;\n /** Callback fired when the value changes. */\n onValueChange?: (value: number) => void;\n /** Whether the slider is disabled. */\n disabled?: boolean;\n}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(\n (\n {\n className,\n value: controlledValue,\n defaultValue = 50,\n min = 0,\n max = 100,\n step = 1,\n onValueChange,\n disabled = false,\n ...props\n },\n ref,\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = Number(e.target.value);\n if (!isControlled) {\n setUncontrolledValue(next);\n }\n onValueChange?.(next);\n };\n\n const percentage = ((value - min) / (max - min)) * 100;\n\n return (\n <div\n ref={ref}\n className={clsx('ds-slider', disabled && 'ds-slider--disabled', className)}\n {...props}\n >\n <div className=\"ds-slider__track\">\n <div\n className=\"ds-slider__range\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n <input\n type=\"range\"\n className=\"ds-slider__thumb\"\n role=\"slider\"\n min={min}\n max={max}\n step={step}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n />\n </div>\n );\n },\n);\n\nSlider.displayName = 'Slider';\n","import React from 'react';\nimport { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport clsx from 'clsx';\nimport './Tabs.css';\n\n/* ============================================================================\n TABS ROOT\n ============================================================================ */\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n defaultValue?: string | number;\n value?: string | number;\n onValueChange?: (value: string | number) => void;\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n ({ className, orientation = 'horizontal', ...props }, ref) => {\n return (\n <BaseTabs.Root\n ref={ref}\n className={clsx('ds-tabs', `ds-tabs--${orientation}`, className)}\n orientation={orientation}\n {...props}\n />\n );\n },\n);\n\nTabs.displayName = 'Tabs';\n\n/* ============================================================================\n TABS LIST\n ============================================================================ */\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {\n loop?: boolean;\n}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, ...props }, ref) => {\n return <BaseTabs.List ref={ref} className={clsx('ds-tabs__list', className)} {...props} />;\n },\n);\n\nTabsList.displayName = 'TabsList';\n\n/* ============================================================================\n TABS TRIGGER\n ============================================================================ */\n\nexport interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string | number;\n disabled?: boolean;\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <BaseTabs.Tab ref={ref} className={clsx('ds-tabs__trigger', className)} {...props}>\n {children}\n </BaseTabs.Tab>\n );\n },\n);\n\nTabsTrigger.displayName = 'TabsTrigger';\n\n/* ============================================================================\n TABS CONTENT\n ============================================================================ */\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string | number;\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ className, ...props }, ref) => {\n return <BaseTabs.Panel ref={ref} className={clsx('ds-tabs__content', className)} {...props} />;\n },\n);\n\nTabsContent.displayName = 'TabsContent';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './Badge.css';\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Visual style variant */\n variant?: 'default' | 'secondary' | 'outline' | 'destructive';\n}\n\n/**\n * General-purpose badge for tags, labels, categories, and status indicators.\n *\n * For status-specific badges (success/warning/error/info), use `StatusBadge` instead.\n *\n * @example\n * <Badge>New</Badge>\n * <Badge variant=\"secondary\">Category</Badge>\n * <Badge variant=\"outline\">v2.1.0</Badge>\n * <Badge variant=\"destructive\">Breaking</Badge>\n */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant = 'default', ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={clsx('ds-badge', `ds-badge--${variant}`, className)}\n {...props}\n />\n );\n },\n);\n\nBadge.displayName = 'Badge';\n"]}