@salesmind-ai/design-system 0.3.4 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/admin/index.cjs +68 -2928
  2. package/dist/admin/index.cjs.map +1 -1
  3. package/dist/admin/index.js +5 -2915
  4. package/dist/admin/index.js.map +1 -1
  5. package/dist/blog/index.cjs +53 -1064
  6. package/dist/blog/index.cjs.map +1 -1
  7. package/dist/blog/index.js +8 -1054
  8. package/dist/blog/index.js.map +1 -1
  9. package/dist/charts/index.cjs +46 -2694
  10. package/dist/charts/index.cjs.map +1 -1
  11. package/dist/charts/index.js +3 -2680
  12. package/dist/charts/index.js.map +1 -1
  13. package/dist/chunk-2GARWEJK.js +17 -0
  14. package/dist/chunk-2GARWEJK.js.map +1 -0
  15. package/dist/chunk-2KQVZ5FB.js +485 -0
  16. package/dist/chunk-2KQVZ5FB.js.map +1 -0
  17. package/dist/chunk-2ZNR2F2V.cjs +194 -0
  18. package/dist/chunk-2ZNR2F2V.cjs.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-B6AVAX4F.js +1415 -0
  36. package/dist/chunk-B6AVAX4F.js.map +1 -0
  37. package/dist/chunk-BILT5KD3.js +264 -0
  38. package/dist/chunk-BILT5KD3.js.map +1 -0
  39. package/dist/chunk-C2BCDNAV.js +24 -0
  40. package/dist/chunk-C2BCDNAV.js.map +1 -0
  41. package/dist/chunk-CH42VPWE.cjs +421 -0
  42. package/dist/chunk-CH42VPWE.cjs.map +1 -0
  43. package/dist/chunk-CJ2MKVAF.cjs +46 -0
  44. package/dist/chunk-CJ2MKVAF.cjs.map +1 -0
  45. package/dist/chunk-DP74LUXG.cjs +98 -0
  46. package/dist/chunk-DP74LUXG.cjs.map +1 -0
  47. package/dist/chunk-E7D6EKJ4.cjs +44 -0
  48. package/dist/chunk-E7D6EKJ4.cjs.map +1 -0
  49. package/dist/chunk-ECXBTUH6.cjs +584 -0
  50. package/dist/chunk-ECXBTUH6.cjs.map +1 -0
  51. package/dist/chunk-EFRAP5ES.js +157 -0
  52. package/dist/chunk-EFRAP5ES.js.map +1 -0
  53. package/dist/chunk-EM7JHRYW.cjs +69 -0
  54. package/dist/chunk-EM7JHRYW.cjs.map +1 -0
  55. package/dist/chunk-FAFAP4L5.js +183 -0
  56. package/dist/chunk-FAFAP4L5.js.map +1 -0
  57. package/dist/chunk-H2Y6BSTL.cjs +69 -0
  58. package/dist/chunk-H2Y6BSTL.cjs.map +1 -0
  59. package/dist/chunk-HN4PHABT.js +126 -0
  60. package/dist/chunk-HN4PHABT.js.map +1 -0
  61. package/dist/chunk-HRENHNDJ.js +211 -0
  62. package/dist/chunk-HRENHNDJ.js.map +1 -0
  63. package/dist/chunk-I75BFEYT.cjs +2561 -0
  64. package/dist/chunk-I75BFEYT.cjs.map +1 -0
  65. package/dist/chunk-IFRATNLU.js +562 -0
  66. package/dist/chunk-IFRATNLU.js.map +1 -0
  67. package/dist/chunk-JNASH4OQ.js +1022 -0
  68. package/dist/chunk-JNASH4OQ.js.map +1 -0
  69. package/dist/chunk-JPJN4YBC.js +409 -0
  70. package/dist/chunk-JPJN4YBC.js.map +1 -0
  71. package/dist/chunk-KCKUSU2M.cjs +166 -0
  72. package/dist/chunk-KCKUSU2M.cjs.map +1 -0
  73. package/dist/chunk-KDLH35OI.cjs +1042 -0
  74. package/dist/chunk-KDLH35OI.cjs.map +1 -0
  75. package/dist/chunk-KJ2OXQF4.js +287 -0
  76. package/dist/chunk-KJ2OXQF4.js.map +1 -0
  77. package/dist/chunk-KK5UO2P4.cjs +717 -0
  78. package/dist/chunk-KK5UO2P4.cjs.map +1 -0
  79. package/dist/chunk-KNQEIU7O.cjs +1202 -0
  80. package/dist/chunk-KNQEIU7O.cjs.map +1 -0
  81. package/dist/chunk-KVGSVGRK.cjs +569 -0
  82. package/dist/chunk-KVGSVGRK.cjs.map +1 -0
  83. package/dist/chunk-L352JRV6.cjs +105 -0
  84. package/dist/chunk-L352JRV6.cjs.map +1 -0
  85. package/dist/chunk-LGNMFBLF.cjs +502 -0
  86. package/dist/chunk-LGNMFBLF.cjs.map +1 -0
  87. package/dist/chunk-LJADZITX.cjs +298 -0
  88. package/dist/chunk-LJADZITX.cjs.map +1 -0
  89. package/dist/chunk-MDB2WCRQ.cjs +137 -0
  90. package/dist/chunk-MDB2WCRQ.cjs.map +1 -0
  91. package/dist/chunk-MQDEE7HC.cjs +283 -0
  92. package/dist/chunk-MQDEE7HC.cjs.map +1 -0
  93. package/dist/chunk-MQRB634A.cjs +34 -0
  94. package/dist/chunk-MQRB634A.cjs.map +1 -0
  95. package/dist/chunk-MU6GW5ZV.js +2317 -0
  96. package/dist/chunk-MU6GW5ZV.js.map +1 -0
  97. package/dist/chunk-NN3TUHIH.js +28 -0
  98. package/dist/chunk-NN3TUHIH.js.map +1 -0
  99. package/dist/chunk-NT4LBP7D.cjs +111 -0
  100. package/dist/chunk-NT4LBP7D.cjs.map +1 -0
  101. package/dist/chunk-OGKGIXFC.cjs +2162 -0
  102. package/dist/chunk-OGKGIXFC.cjs.map +1 -0
  103. package/dist/chunk-OXNXEQY7.js +2538 -0
  104. package/dist/chunk-OXNXEQY7.js.map +1 -0
  105. package/dist/chunk-P5BOFE5A.js +546 -0
  106. package/dist/chunk-P5BOFE5A.js.map +1 -0
  107. package/dist/chunk-PE2KJVRN.js +185 -0
  108. package/dist/chunk-PE2KJVRN.js.map +1 -0
  109. package/dist/chunk-Q2MFGYTE.cjs +1449 -0
  110. package/dist/chunk-Q2MFGYTE.cjs.map +1 -0
  111. package/dist/chunk-Q75DBVDY.cjs +68 -0
  112. package/dist/chunk-Q75DBVDY.cjs.map +1 -0
  113. package/dist/chunk-RQUFZAZ7.js +1608 -0
  114. package/dist/chunk-RQUFZAZ7.js.map +1 -0
  115. package/dist/chunk-SICKWUWB.js +62 -0
  116. package/dist/chunk-SICKWUWB.js.map +1 -0
  117. package/dist/chunk-T343CCH5.js +1190 -0
  118. package/dist/chunk-T343CCH5.js.map +1 -0
  119. package/dist/chunk-T5H5PNLN.js +701 -0
  120. package/dist/chunk-T5H5PNLN.js.map +1 -0
  121. package/dist/chunk-U3LK2GID.js +2122 -0
  122. package/dist/chunk-U3LK2GID.js.map +1 -0
  123. package/dist/chunk-UFAJY2DM.js +62 -0
  124. package/dist/chunk-UFAJY2DM.js.map +1 -0
  125. package/dist/chunk-VC5LMUVQ.cjs +20 -0
  126. package/dist/chunk-VC5LMUVQ.cjs.map +1 -0
  127. package/dist/chunk-VM7WFMKI.cjs +76 -0
  128. package/dist/chunk-VM7WFMKI.cjs.map +1 -0
  129. package/dist/chunk-W2WTP6HS.cjs +233 -0
  130. package/dist/chunk-W2WTP6HS.cjs.map +1 -0
  131. package/dist/chunk-WH7PYHZY.cjs +35 -0
  132. package/dist/chunk-WH7PYHZY.cjs.map +1 -0
  133. package/dist/chunk-XU3OMQ7V.js +98 -0
  134. package/dist/chunk-XU3OMQ7V.js.map +1 -0
  135. package/dist/chunk-XWPDRMZG.js +62 -0
  136. package/dist/chunk-XWPDRMZG.js.map +1 -0
  137. package/dist/chunk-Y3CPKNB7.js +67 -0
  138. package/dist/chunk-Y3CPKNB7.js.map +1 -0
  139. package/dist/chunk-YNVRDD2P.js +98 -0
  140. package/dist/chunk-YNVRDD2P.js.map +1 -0
  141. package/dist/chunk-YSYR54XR.js +92 -0
  142. package/dist/chunk-YSYR54XR.js.map +1 -0
  143. package/dist/chunk-YTYDQBVY.cjs +162 -0
  144. package/dist/chunk-YTYDQBVY.cjs.map +1 -0
  145. package/dist/core/index.cjs +807 -4333
  146. package/dist/core/index.cjs.map +1 -1
  147. package/dist/core/index.js +14 -4130
  148. package/dist/core/index.js.map +1 -1
  149. package/dist/i18n/index.cjs +86 -558
  150. package/dist/i18n/index.cjs.map +1 -1
  151. package/dist/i18n/index.js +1 -544
  152. package/dist/i18n/index.js.map +1 -1
  153. package/dist/index.cjs +1432 -17140
  154. package/dist/index.cjs.map +1 -1
  155. package/dist/index.js +31 -16785
  156. package/dist/index.js.map +1 -1
  157. package/dist/marketing/index.cjs +142 -3072
  158. package/dist/marketing/index.cjs.map +1 -1
  159. package/dist/marketing/index.js +11 -3042
  160. package/dist/marketing/index.js.map +1 -1
  161. package/dist/motion/index.cjs +26 -1222
  162. package/dist/motion/index.cjs.map +1 -1
  163. package/dist/motion/index.js +2 -1215
  164. package/dist/motion/index.js.map +1 -1
  165. package/dist/nav/index.cjs +101 -1518
  166. package/dist/nav/index.cjs.map +1 -1
  167. package/dist/nav/index.js +4 -1498
  168. package/dist/nav/index.js.map +1 -1
  169. package/dist/report/index.cjs +171 -2403
  170. package/dist/report/index.cjs.map +1 -1
  171. package/dist/report/index.js +3 -2363
  172. package/dist/report/index.js.map +1 -1
  173. package/dist/sections/index.cjs +22 -377
  174. package/dist/sections/index.cjs.map +1 -1
  175. package/dist/sections/index.js +6 -369
  176. package/dist/sections/index.js.map +1 -1
  177. package/dist/social-proof/index.cjs +53 -1250
  178. package/dist/social-proof/index.cjs.map +1 -1
  179. package/dist/social-proof/index.js +6 -1235
  180. package/dist/social-proof/index.js.map +1 -1
  181. package/dist/theme/index.cjs +38 -565
  182. package/dist/theme/index.cjs.map +1 -1
  183. package/dist/theme/index.js +2 -555
  184. package/dist/theme/index.js.map +1 -1
  185. package/dist/web/client/index.cjs +38 -491
  186. package/dist/web/client/index.cjs.map +1 -1
  187. package/dist/web/client/index.js +4 -483
  188. package/dist/web/client/index.js.map +1 -1
  189. package/dist/web/index.cjs +158 -1346
  190. package/dist/web/index.cjs.map +1 -1
  191. package/dist/web/index.js +9 -1305
  192. package/dist/web/index.js.map +1 -1
  193. package/dist/web/server/index.cjs +26 -563
  194. package/dist/web/server/index.cjs.map +1 -1
  195. package/dist/web/server/index.js +1 -560
  196. package/dist/web/server/index.js.map +1 -1
  197. package/package.json +1 -1
@@ -0,0 +1,62 @@
1
+ import { Container } from './chunk-HN4PHABT.js';
2
+ import { forwardRef } from 'react';
3
+ import clsx from 'clsx';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var SectionHeader = forwardRef(
7
+ ({ title, subtitle, eyebrow, align = "center", className, ...props }, ref) => {
8
+ if (!title && !subtitle && !eyebrow) return null;
9
+ return /* @__PURE__ */ jsxs(
10
+ "header",
11
+ {
12
+ ref,
13
+ className: clsx("ds-section-header", `ds-section-header--${align}`, className),
14
+ ...props,
15
+ children: [
16
+ eyebrow && /* @__PURE__ */ jsx("span", { className: "ds-section-header__eyebrow", children: eyebrow }),
17
+ title && /* @__PURE__ */ jsx("h2", { className: "ds-section-header__title", children: title }),
18
+ subtitle && /* @__PURE__ */ jsx("p", { className: "ds-section-header__subtitle", children: subtitle })
19
+ ]
20
+ }
21
+ );
22
+ }
23
+ );
24
+ SectionHeader.displayName = "SectionHeader";
25
+ var SectionShell = forwardRef(
26
+ ({
27
+ className,
28
+ children,
29
+ background = "default",
30
+ padding = "md",
31
+ containerSize,
32
+ containerFluid = false,
33
+ ...props
34
+ }, ref) => {
35
+ return /* @__PURE__ */ jsx(
36
+ "section",
37
+ {
38
+ ref,
39
+ className: clsx(
40
+ "ds-section",
41
+ `ds-section--bg-${background}`,
42
+ `ds-section--padding-${padding}`,
43
+ className
44
+ ),
45
+ ...props,
46
+ children: /* @__PURE__ */ jsx(
47
+ Container,
48
+ {
49
+ size: containerSize === "fluid" ? "full" : containerSize,
50
+ fluid: containerFluid || containerSize === "fluid",
51
+ children
52
+ }
53
+ )
54
+ }
55
+ );
56
+ }
57
+ );
58
+ SectionShell.displayName = "SectionShell";
59
+
60
+ export { SectionHeader, SectionShell };
61
+ //# sourceMappingURL=out.js.map
62
+ //# sourceMappingURL=chunk-UFAJY2DM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/SectionShell/SectionShell.tsx"],"names":[],"mappings":";;;;;AAAA,SAAgB,kBAAkC;AAClD,OAAO,UAAU;AAoBX,SAKc,KALd;AALC,IAAM,gBAAgB;AAAA,EAC3B,CAAC,EAAE,OAAO,UAAU,SAAS,QAAQ,UAAU,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC5E,QAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAS,QAAO;AAE5C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,KAAK,qBAAqB,sBAAsB,KAAK,IAAI,SAAS;AAAA,QAC5E,GAAG;AAAA,QAEH;AAAA,qBAAW,oBAAC,UAAK,WAAU,8BAA8B,mBAAQ;AAAA,UACjE,SAAS,oBAAC,QAAG,WAAU,4BAA4B,iBAAM;AAAA,UACzD,YAAY,oBAAC,OAAE,WAAU,+BAA+B,oBAAS;AAAA;AAAA;AAAA,IACpE;AAAA,EAEJ;AACF;AACA,cAAc,cAAc;AAcrB,IAAM,eAAe;AAAA,EAC1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,UAAU;AAAA,IACV;AAAA,IACA,iBAAiB;AAAA,IACjB,GAAG;AAAA,EACL,GACA,QACG;AACH,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA,kBAAkB,UAAU;AAAA,UAC5B,uBAAuB,OAAO;AAAA,UAC9B;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,kBAAkB,UAAU,SAAU;AAAA,YAC5C,OAAO,kBAAkB,kBAAkB;AAAA,YAE1C;AAAA;AAAA,QACH;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,aAAa,cAAc","sourcesContent":["import React, { forwardRef, HTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport { Container } from '../LayoutPrimitives';\nimport './SectionShell.css';\n\n/* ============================================================================\n Section Header Component\n ============================================================================ */\n\nexport interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n eyebrow?: React.ReactNode;\n align?: 'left' | 'center' | 'right';\n}\n\nexport const SectionHeader = forwardRef<HTMLDivElement, SectionHeaderProps>(\n ({ title, subtitle, eyebrow, align = 'center', className, ...props }, ref) => {\n if (!title && !subtitle && !eyebrow) return null;\n\n return (\n <header\n ref={ref}\n className={clsx('ds-section-header', `ds-section-header--${align}`, className)}\n {...props}\n >\n {eyebrow && <span className=\"ds-section-header__eyebrow\">{eyebrow}</span>}\n {title && <h2 className=\"ds-section-header__title\">{title}</h2>}\n {subtitle && <p className=\"ds-section-header__subtitle\">{subtitle}</p>}\n </header>\n );\n },\n);\nSectionHeader.displayName = 'SectionHeader';\n\n/* ============================================================================\n Section Shell Component\n ============================================================================ */\n\nexport interface SectionShellProps extends HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n background?: 'default' | 'muted' | 'brand' | 'transparent';\n padding?: 'none' | 'sm' | 'md' | 'lg';\n containerSize?: 'sm' | 'md' | 'lg' | 'xl' | 'fluid'; // Maps to Container max-width\n containerFluid?: boolean;\n}\n\nexport const SectionShell = forwardRef<HTMLDivElement, SectionShellProps>(\n (\n {\n className,\n children,\n background = 'default',\n padding = 'md',\n containerSize,\n containerFluid = false,\n ...props\n },\n ref,\n ) => {\n return (\n <section\n ref={ref}\n className={clsx(\n 'ds-section',\n `ds-section--bg-${background}`,\n `ds-section--padding-${padding}`,\n className,\n )}\n {...props}\n >\n <Container\n size={containerSize === 'fluid' ? 'full' : (containerSize as 'sm' | 'md' | 'lg' | 'xl' | undefined)}\n fluid={containerFluid || containerSize === 'fluid'}\n >\n {children}\n </Container>\n </section>\n );\n },\n);\nSectionShell.displayName = 'SectionShell';\n"]}
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+
5
+ // src/web/analytics/use-analytics.tsx
6
+ var AnalyticsContext = react.createContext(null);
7
+
8
+ // src/web/analytics/use-analytics.tsx
9
+ var NOOP_VALUE = {
10
+ track: () => {
11
+ }
12
+ };
13
+ function useAnalytics() {
14
+ return react.useContext(AnalyticsContext) ?? NOOP_VALUE;
15
+ }
16
+
17
+ exports.AnalyticsContext = AnalyticsContext;
18
+ exports.useAnalytics = useAnalytics;
19
+ //# sourceMappingURL=out.js.map
20
+ //# sourceMappingURL=chunk-VC5LMUVQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/web/analytics/use-analytics.tsx","../src/web/analytics/analytics-context.ts"],"names":[],"mappings":";AACA,SAAS,kBAAkB;;;ACD3B,SAAS,qBAAqB;AAsBvB,IAAM,mBAAmB,cAA4C,IAAI;;;ADjBhF,IAAM,aAAoC;AAAA,EACxC,OAAO,MAAM;AAAA,EAEb;AACF;AAaO,SAAS,eAAsC;AACpD,SAAO,WAAW,gBAAgB,KAAK;AACzC","sourcesContent":["\"use client\";\nimport { useContext } from 'react';\nimport { AnalyticsContext } from './analytics-context';\nimport type { AnalyticsContextValue } from './analytics-context';\n\nconst NOOP_VALUE: AnalyticsContextValue = {\n track: () => {\n /* no-op when no provider is present */\n },\n};\n\n/**\n * Access the analytics tracking interface.\n * Returns a no-op tracker when used outside an AnalyticsProvider —\n * components never need to guard against missing providers.\n *\n * @example\n * ```tsx\n * const { track } = useAnalytics();\n * track('form_submit', { form: 'lead-capture', email: true });\n * ```\n */\nexport function useAnalytics(): AnalyticsContextValue {\n return useContext(AnalyticsContext) ?? NOOP_VALUE;\n}\n","import { createContext } from 'react';\n\n/* ============================================================================\n ANALYTICS CONTEXT — Shared types & context object\n ============================================================================ */\n\n/** Arbitrary properties bag attached to every analytics event. */\nexport type AnalyticsEventProps = Record<string, string | number | boolean | undefined>;\n\n/** Signature for the track function provided by AnalyticsProvider. */\nexport type TrackFn = (event: string, props?: AnalyticsEventProps) => void;\n\n/** Value exposed by the AnalyticsContext. */\nexport interface AnalyticsContextValue {\n track: TrackFn;\n}\n\n/**\n * React context for analytics event tracking.\n * When no provider is present the value is `null` — consumers should\n * fall back to a no-op so components remain safe in Storybook / tests / SSR.\n */\nexport const AnalyticsContext = createContext<AnalyticsContextValue | null>(null);\n"]}
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var clsx = require('clsx');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefault(React);
10
+ var clsx__default = /*#__PURE__*/_interopDefault(clsx);
11
+
12
+ // src/components/Avatar/Avatar.tsx
13
+ var AvatarContext = React__default.default.createContext({
14
+ hasImage: false,
15
+ imageError: false,
16
+ onImageError: () => {
17
+ }
18
+ });
19
+ var Avatar = React__default.default.forwardRef(
20
+ ({ size = "md", className, children, ...props }, ref) => {
21
+ const [imageError, setImageError] = React__default.default.useState(false);
22
+ const [hasImage, setHasImage] = React__default.default.useState(false);
23
+ React__default.default.useEffect(() => {
24
+ let found = false;
25
+ React__default.default.Children.forEach(children, (child) => {
26
+ if (React__default.default.isValidElement(child) && child.type === AvatarImage) {
27
+ found = true;
28
+ }
29
+ });
30
+ setHasImage(found);
31
+ }, [children]);
32
+ const onImageError = React__default.default.useCallback(() => {
33
+ setImageError(true);
34
+ }, []);
35
+ return /* @__PURE__ */ jsxRuntime.jsx(AvatarContext.Provider, { value: { hasImage, imageError, onImageError }, children: /* @__PURE__ */ jsxRuntime.jsx(
36
+ "span",
37
+ {
38
+ ref,
39
+ className: clsx__default.default("ds-avatar", `ds-avatar--${size}`, className),
40
+ ...props,
41
+ children
42
+ }
43
+ ) });
44
+ }
45
+ );
46
+ Avatar.displayName = "Avatar";
47
+ var AvatarImage = React__default.default.forwardRef(({ className, onError, ...props }, ref) => {
48
+ const { imageError, onImageError } = React__default.default.useContext(AvatarContext);
49
+ const handleError = (e) => {
50
+ onImageError();
51
+ onError?.(e);
52
+ };
53
+ if (imageError) return null;
54
+ return /* @__PURE__ */ jsxRuntime.jsx(
55
+ "img",
56
+ {
57
+ ref,
58
+ className: clsx__default.default("ds-avatar__image", className),
59
+ onError: handleError,
60
+ ...props
61
+ }
62
+ );
63
+ });
64
+ AvatarImage.displayName = "AvatarImage";
65
+ var AvatarFallback = React__default.default.forwardRef(({ className, ...props }, ref) => {
66
+ const { hasImage, imageError } = React__default.default.useContext(AvatarContext);
67
+ if (hasImage && !imageError) return null;
68
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { ref, className: clsx__default.default("ds-avatar__fallback", className), ...props });
69
+ });
70
+ AvatarFallback.displayName = "AvatarFallback";
71
+
72
+ exports.Avatar = Avatar;
73
+ exports.AvatarFallback = AvatarFallback;
74
+ exports.AvatarImage = AvatarImage;
75
+ //# sourceMappingURL=out.js.map
76
+ //# sourceMappingURL=chunk-VM7WFMKI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW;AAClB,OAAO,UAAU;AA2DT;AA9CR,IAAM,gBAAgB,MAAM,cAAkC;AAAA,EAC5D,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc,MAAM;AAAA,EAAC;AACvB,CAAC;AAoBM,IAAM,SAAS,MAAM;AAAA,EAC1B,CAAC,EAAE,OAAO,MAAM,WAAW,UAAU,GAAG,MAAM,GAAG,QAAQ;AACvD,UAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,KAAK;AACxD,UAAM,CAAC,UAAU,WAAW,IAAI,MAAM,SAAS,KAAK;AAGpD,UAAM,UAAU,MAAM;AACpB,UAAI,QAAQ;AACZ,YAAM,SAAS,QAAQ,UAAU,CAAC,UAAU;AAC1C,YAAI,MAAM,eAAe,KAAK,KAAK,MAAM,SAAS,aAAa;AAC7D,kBAAQ;AAAA,QACV;AAAA,MACF,CAAC;AACD,kBAAY,KAAK;AAAA,IACnB,GAAG,CAAC,QAAQ,CAAC;AAEb,UAAM,eAAe,MAAM,YAAY,MAAM;AAC3C,oBAAc,IAAI;AAAA,IACpB,GAAG,CAAC,CAAC;AAEL,WACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,UAAU,YAAY,aAAa,GAClE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,KAAK,aAAa,cAAc,IAAI,IAAI,SAAS;AAAA,QAC3D,GAAG;AAAA,QAEH;AAAA;AAAA,IACH,GACF;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;AAMd,IAAM,cAAc,MAAM,WAG/B,CAAC,EAAE,WAAW,SAAS,GAAG,MAAM,GAAG,QAAQ;AAC3C,QAAM,EAAE,YAAY,aAAa,IAAI,MAAM,WAAW,aAAa;AAEnE,QAAM,cAAc,CAAC,MAA8C;AACjE,iBAAa;AACb,cAAU,CAAC;AAAA,EACb;AAEA,MAAI,WAAY,QAAO;AAEvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,KAAK,oBAAoB,SAAS;AAAA,MAC7C,SAAS;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,YAAY,cAAc;AAMnB,IAAM,iBAAiB,MAAM,WAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,QAAM,EAAE,UAAU,WAAW,IAAI,MAAM,WAAW,aAAa;AAG/D,MAAI,YAAY,CAAC,WAAY,QAAO;AAEpC,SACE,oBAAC,UAAK,KAAU,WAAW,KAAK,uBAAuB,SAAS,GAAI,GAAG,OAAO;AAElF,CAAC;AAED,eAAe,cAAc","sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport './Avatar.css';\n\n/* ==========================================================================\n Context\n ========================================================================== */\n\ninterface AvatarContextValue {\n hasImage: boolean;\n imageError: boolean;\n onImageError: () => void;\n}\n\nconst AvatarContext = React.createContext<AvatarContextValue>({\n hasImage: false,\n imageError: false,\n onImageError: () => {},\n});\n\n/* ==========================================================================\n Avatar (root)\n ========================================================================== */\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n}\n\n/**\n * User avatar with image and fallback support.\n *\n * @example\n * <Avatar>\n * <AvatarImage src=\"/photo.jpg\" alt=\"User\" />\n * <AvatarFallback>JD</AvatarFallback>\n * </Avatar>\n */\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n ({ size = 'md', className, children, ...props }, ref) => {\n const [imageError, setImageError] = React.useState(false);\n const [hasImage, setHasImage] = React.useState(false);\n\n // Scan children to detect if an AvatarImage is present\n React.useEffect(() => {\n let found = false;\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === AvatarImage) {\n found = true;\n }\n });\n setHasImage(found);\n }, [children]);\n\n const onImageError = React.useCallback(() => {\n setImageError(true);\n }, []);\n\n return (\n <AvatarContext.Provider value={{ hasImage, imageError, onImageError }}>\n <span\n ref={ref}\n className={clsx('ds-avatar', `ds-avatar--${size}`, className)}\n {...props}\n >\n {children}\n </span>\n </AvatarContext.Provider>\n );\n },\n);\n\nAvatar.displayName = 'Avatar';\n\n/* ==========================================================================\n AvatarImage\n ========================================================================== */\n\nexport const AvatarImage = React.forwardRef<\n HTMLImageElement,\n React.ImgHTMLAttributes<HTMLImageElement>\n>(({ className, onError, ...props }, ref) => {\n const { imageError, onImageError } = React.useContext(AvatarContext);\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n onImageError();\n onError?.(e);\n };\n\n if (imageError) return null;\n\n return (\n <img\n ref={ref}\n className={clsx('ds-avatar__image', className)}\n onError={handleError}\n {...props}\n />\n );\n});\n\nAvatarImage.displayName = 'AvatarImage';\n\n/* ==========================================================================\n AvatarFallback\n ========================================================================== */\n\nexport const AvatarFallback = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => {\n const { hasImage, imageError } = React.useContext(AvatarContext);\n\n // Show fallback when there is no image, or the image failed to load\n if (hasImage && !imageError) return null;\n\n return (\n <span ref={ref} className={clsx('ds-avatar__fallback', className)} {...props} />\n );\n});\n\nAvatarFallback.displayName = 'AvatarFallback';\n"]}
@@ -0,0 +1,233 @@
1
+ 'use strict';
2
+
3
+ var React2 = require('react');
4
+ var dialog = require('@base-ui/react/dialog');
5
+ var clsx = require('clsx');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var tabs = require('@base-ui/react/tabs');
8
+
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var React2__default = /*#__PURE__*/_interopDefault(React2);
12
+ var clsx__default = /*#__PURE__*/_interopDefault(clsx);
13
+
14
+ // src/components/Dialog/Dialog.tsx
15
+ var Dialog = dialog.Dialog.Root;
16
+ var DialogTrigger = dialog.Dialog.Trigger;
17
+ var DialogClose = dialog.Dialog.Close;
18
+ var DialogTitle = React2__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Title, { ref, className: clsx__default.default("ds-dialog__title", className), ...props }));
19
+ DialogTitle.displayName = "DialogTitle";
20
+ var DialogDescription = React2__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
21
+ dialog.Dialog.Description,
22
+ {
23
+ ref,
24
+ className: clsx__default.default("ds-dialog__description", className),
25
+ ...props
26
+ }
27
+ ));
28
+ DialogDescription.displayName = "DialogDescription";
29
+ var DialogContent = React2__default.default.forwardRef(
30
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(dialog.Dialog.Portal, { children: [
31
+ /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Backdrop, { className: "ds-dialog__backdrop" }),
32
+ /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog.Popup, { ref, className: clsx__default.default("ds-dialog__content", className), ...props, children })
33
+ ] })
34
+ );
35
+ DialogContent.displayName = "DialogContent";
36
+ var DialogHeader = React2__default.default.forwardRef(
37
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx__default.default("ds-dialog__header", className), ...props })
38
+ );
39
+ DialogHeader.displayName = "DialogHeader";
40
+ var DialogFooter = React2__default.default.forwardRef(
41
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx__default.default("ds-dialog__footer", className), ...props })
42
+ );
43
+ DialogFooter.displayName = "DialogFooter";
44
+ var ToggleGroupContext = React2__default.default.createContext({
45
+ type: "single",
46
+ value: [],
47
+ onItemToggle: () => {
48
+ }
49
+ });
50
+ var ToggleGroup = React2__default.default.forwardRef(
51
+ ({ className, type, value, onValueChange, children, ...props }, ref) => {
52
+ const normalizedValue = React2__default.default.useMemo(() => {
53
+ if (value === void 0) return [];
54
+ return Array.isArray(value) ? value : [value];
55
+ }, [value]);
56
+ const onItemToggle = React2__default.default.useCallback(
57
+ (itemValue) => {
58
+ if (type === "single") {
59
+ const next = normalizedValue.includes(itemValue) ? "" : itemValue;
60
+ onValueChange?.(next);
61
+ } else {
62
+ const next = normalizedValue.includes(itemValue) ? normalizedValue.filter((v) => v !== itemValue) : [...normalizedValue, itemValue];
63
+ onValueChange?.(next);
64
+ }
65
+ },
66
+ [type, normalizedValue, onValueChange]
67
+ );
68
+ const ctx = React2__default.default.useMemo(
69
+ () => ({ type, value: normalizedValue, onItemToggle }),
70
+ [type, normalizedValue, onItemToggle]
71
+ );
72
+ return /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
73
+ "div",
74
+ {
75
+ ref,
76
+ role: "group",
77
+ className: clsx__default.default("ds-toggle-group", className),
78
+ ...props,
79
+ children
80
+ }
81
+ ) });
82
+ }
83
+ );
84
+ ToggleGroup.displayName = "ToggleGroup";
85
+ var ToggleGroupItem = React2__default.default.forwardRef(({ className, value, children, onClick, ...props }, ref) => {
86
+ const ctx = React2__default.default.useContext(ToggleGroupContext);
87
+ const pressed = ctx.value.includes(value);
88
+ const handleClick = (e) => {
89
+ ctx.onItemToggle(value);
90
+ onClick?.(e);
91
+ };
92
+ return /* @__PURE__ */ jsxRuntime.jsx(
93
+ "button",
94
+ {
95
+ ref,
96
+ type: "button",
97
+ "aria-pressed": pressed,
98
+ className: clsx__default.default(
99
+ "ds-toggle-group__item",
100
+ pressed && "ds-toggle-group__item--pressed",
101
+ className
102
+ ),
103
+ onClick: handleClick,
104
+ ...props,
105
+ children
106
+ }
107
+ );
108
+ });
109
+ ToggleGroupItem.displayName = "ToggleGroupItem";
110
+ var Slider = React2__default.default.forwardRef(
111
+ ({
112
+ className,
113
+ value: controlledValue,
114
+ defaultValue = 50,
115
+ min = 0,
116
+ max = 100,
117
+ step = 1,
118
+ onValueChange,
119
+ disabled = false,
120
+ ...props
121
+ }, ref) => {
122
+ const [uncontrolledValue, setUncontrolledValue] = React2__default.default.useState(defaultValue);
123
+ const isControlled = controlledValue !== void 0;
124
+ const value = isControlled ? controlledValue : uncontrolledValue;
125
+ const handleChange = (e) => {
126
+ const next = Number(e.target.value);
127
+ if (!isControlled) {
128
+ setUncontrolledValue(next);
129
+ }
130
+ onValueChange?.(next);
131
+ };
132
+ const percentage = (value - min) / (max - min) * 100;
133
+ return /* @__PURE__ */ jsxRuntime.jsxs(
134
+ "div",
135
+ {
136
+ ref,
137
+ className: clsx__default.default("ds-slider", disabled && "ds-slider--disabled", className),
138
+ ...props,
139
+ children: [
140
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-slider__track", children: /* @__PURE__ */ jsxRuntime.jsx(
141
+ "div",
142
+ {
143
+ className: "ds-slider__range",
144
+ style: { width: `${percentage}%` }
145
+ }
146
+ ) }),
147
+ /* @__PURE__ */ jsxRuntime.jsx(
148
+ "input",
149
+ {
150
+ type: "range",
151
+ className: "ds-slider__thumb",
152
+ role: "slider",
153
+ min,
154
+ max,
155
+ step,
156
+ value,
157
+ disabled,
158
+ onChange: handleChange,
159
+ "aria-valuemin": min,
160
+ "aria-valuemax": max,
161
+ "aria-valuenow": value
162
+ }
163
+ )
164
+ ]
165
+ }
166
+ );
167
+ }
168
+ );
169
+ Slider.displayName = "Slider";
170
+ var Tabs = React2__default.default.forwardRef(
171
+ ({ className, orientation = "horizontal", ...props }, ref) => {
172
+ return /* @__PURE__ */ jsxRuntime.jsx(
173
+ tabs.Tabs.Root,
174
+ {
175
+ ref,
176
+ className: clsx__default.default("ds-tabs", `ds-tabs--${orientation}`, className),
177
+ orientation,
178
+ ...props
179
+ }
180
+ );
181
+ }
182
+ );
183
+ Tabs.displayName = "Tabs";
184
+ var TabsList = React2__default.default.forwardRef(
185
+ ({ className, ...props }, ref) => {
186
+ return /* @__PURE__ */ jsxRuntime.jsx(tabs.Tabs.List, { ref, className: clsx__default.default("ds-tabs__list", className), ...props });
187
+ }
188
+ );
189
+ TabsList.displayName = "TabsList";
190
+ var TabsTrigger = React2__default.default.forwardRef(
191
+ ({ className, children, ...props }, ref) => {
192
+ return /* @__PURE__ */ jsxRuntime.jsx(tabs.Tabs.Tab, { ref, className: clsx__default.default("ds-tabs__trigger", className), ...props, children });
193
+ }
194
+ );
195
+ TabsTrigger.displayName = "TabsTrigger";
196
+ var TabsContent = React2__default.default.forwardRef(
197
+ ({ className, ...props }, ref) => {
198
+ return /* @__PURE__ */ jsxRuntime.jsx(tabs.Tabs.Panel, { ref, className: clsx__default.default("ds-tabs__content", className), ...props });
199
+ }
200
+ );
201
+ TabsContent.displayName = "TabsContent";
202
+ var Badge = React2__default.default.forwardRef(
203
+ ({ className, variant = "default", ...props }, ref) => {
204
+ return /* @__PURE__ */ jsxRuntime.jsx(
205
+ "span",
206
+ {
207
+ ref,
208
+ className: clsx__default.default("ds-badge", `ds-badge--${variant}`, className),
209
+ ...props
210
+ }
211
+ );
212
+ }
213
+ );
214
+ Badge.displayName = "Badge";
215
+
216
+ exports.Badge = Badge;
217
+ exports.Dialog = Dialog;
218
+ exports.DialogClose = DialogClose;
219
+ exports.DialogContent = DialogContent;
220
+ exports.DialogDescription = DialogDescription;
221
+ exports.DialogFooter = DialogFooter;
222
+ exports.DialogHeader = DialogHeader;
223
+ exports.DialogTitle = DialogTitle;
224
+ exports.DialogTrigger = DialogTrigger;
225
+ exports.Slider = Slider;
226
+ exports.Tabs = Tabs;
227
+ exports.TabsContent = TabsContent;
228
+ exports.TabsList = TabsList;
229
+ exports.TabsTrigger = TabsTrigger;
230
+ exports.ToggleGroup = ToggleGroup;
231
+ exports.ToggleGroupItem = ToggleGroupItem;
232
+ //# sourceMappingURL=out.js.map
233
+ //# sourceMappingURL=chunk-W2WTP6HS.cjs.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"]}
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var tooltip = require('@base-ui/react/tooltip');
5
+ var clsx = require('clsx');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var React__default = /*#__PURE__*/_interopDefault(React);
11
+ var clsx__default = /*#__PURE__*/_interopDefault(clsx);
12
+
13
+ // src/components/Tooltip/Tooltip.tsx
14
+ var TooltipProvider = tooltip.Tooltip.Provider;
15
+ var TooltipRoot = tooltip.Tooltip.Root;
16
+ var TooltipTrigger = tooltip.Tooltip.Trigger;
17
+ var TooltipContent = React__default.default.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip.Positioner, { sideOffset: 5, children: /* @__PURE__ */ jsxRuntime.jsxs(tooltip.Tooltip.Popup, { ref, className: clsx__default.default("ds-tooltip__content", className), ...props, children: [
18
+ children,
19
+ /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip.Arrow, { className: "ds-tooltip__arrow" })
20
+ ] }) }) }));
21
+ TooltipContent.displayName = "TooltipContent";
22
+ var Tooltip = ({ content, children, delay = 200 }) => {
23
+ return /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip.Provider, { delay, children: /* @__PURE__ */ jsxRuntime.jsxs(tooltip.Tooltip.Root, { children: [
24
+ /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip.Trigger, { render: children }),
25
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { children: content })
26
+ ] }) });
27
+ };
28
+
29
+ exports.Tooltip = Tooltip;
30
+ exports.TooltipContent = TooltipContent;
31
+ exports.TooltipProvider = TooltipProvider;
32
+ exports.TooltipRoot = TooltipRoot;
33
+ exports.TooltipTrigger = TooltipTrigger;
34
+ //# sourceMappingURL=out.js.map
35
+ //# sourceMappingURL=chunk-WH7PYHZY.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW;AAClB,SAAS,WAAW,mBAAmB;AACvC,OAAO,UAAU;AAaX,SAEE,KAFF;AAVC,IAAM,kBAAkB,YAAY;AACpC,IAAM,cAAc,YAAY;AAChC,IAAM,iBAAiB,YAAY;AAEnC,IAAM,iBAAiB,MAAM,WAGlC,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QACpC,oBAAC,YAAY,QAAZ,EACC,8BAAC,YAAY,YAAZ,EAAuB,YAAY,GAClC,+BAAC,YAAY,OAAZ,EAAkB,KAAU,WAAW,KAAK,uBAAuB,SAAS,GAAI,GAAG,OACjF;AAAA;AAAA,EACD,oBAAC,YAAY,OAAZ,EAAkB,WAAU,qBAAoB;AAAA,GACnD,GACF,GACF,CACD;AACD,eAAe,cAAc;AAQtB,IAAM,UAAU,CAAC,EAAE,SAAS,UAAU,QAAQ,IAAI,MAAoB;AAC3E,SACE,oBAAC,YAAY,UAAZ,EAAqB,OACpB,+BAAC,YAAY,MAAZ,EACC;AAAA,wBAAC,YAAY,SAAZ,EAAoB,QAAQ,UAAgC;AAAA,IAC7D,oBAAC,kBAAgB,mBAAQ;AAAA,KAC3B,GACF;AAEJ","sourcesContent":["import React from 'react';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport clsx from 'clsx';\nimport './Tooltip.css';\n\nexport const TooltipProvider = BaseTooltip.Provider;\nexport const TooltipRoot = BaseTooltip.Root;\nexport const TooltipTrigger = BaseTooltip.Trigger;\n\nexport const TooltipContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, children, ...props }, ref) => (\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner sideOffset={5}>\n <BaseTooltip.Popup ref={ref} className={clsx('ds-tooltip__content', className)} {...props}>\n {children}\n <BaseTooltip.Arrow className=\"ds-tooltip__arrow\" />\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n));\nTooltipContent.displayName = 'TooltipContent';\n\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n delay?: number;\n}\n\nexport const Tooltip = ({ content, children, delay = 200 }: TooltipProps) => {\n return (\n <BaseTooltip.Provider delay={delay}>\n <BaseTooltip.Root>\n <BaseTooltip.Trigger render={children as React.ReactElement} />\n <TooltipContent>{content}</TooltipContent>\n </BaseTooltip.Root>\n </BaseTooltip.Provider>\n );\n};\n"]}
@@ -0,0 +1,98 @@
1
+ import React from 'react';
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import clsx from 'clsx';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ // src/components/Breadcrumb/Breadcrumb.tsx
7
+ var Breadcrumb = React.forwardRef(
8
+ ({ className, "aria-label": ariaLabel = "Breadcrumb", ...props }, ref) => {
9
+ return /* @__PURE__ */ jsx(
10
+ "nav",
11
+ {
12
+ ref,
13
+ "aria-label": ariaLabel,
14
+ className: clsx("ds-breadcrumb", className),
15
+ ...props
16
+ }
17
+ );
18
+ }
19
+ );
20
+ Breadcrumb.displayName = "Breadcrumb";
21
+ var BreadcrumbList = React.forwardRef(({ className, ...props }, ref) => {
22
+ return /* @__PURE__ */ jsx(
23
+ "ol",
24
+ {
25
+ ref,
26
+ className: clsx("ds-breadcrumb__list", className),
27
+ ...props
28
+ }
29
+ );
30
+ });
31
+ BreadcrumbList.displayName = "BreadcrumbList";
32
+ var BreadcrumbItem = React.forwardRef(({ className, ...props }, ref) => {
33
+ return /* @__PURE__ */ jsx(
34
+ "li",
35
+ {
36
+ ref,
37
+ className: clsx("ds-breadcrumb__item", className),
38
+ ...props
39
+ }
40
+ );
41
+ });
42
+ BreadcrumbItem.displayName = "BreadcrumbItem";
43
+ var BreadcrumbLink = React.forwardRef(({ className, asChild = false, ...props }, ref) => {
44
+ const Comp = asChild ? Slot : "a";
45
+ return /* @__PURE__ */ jsx(
46
+ Comp,
47
+ {
48
+ ref,
49
+ className: clsx("ds-breadcrumb__link", className),
50
+ ...props
51
+ }
52
+ );
53
+ });
54
+ BreadcrumbLink.displayName = "BreadcrumbLink";
55
+ var BreadcrumbPage = React.forwardRef(({ className, ...props }, ref) => {
56
+ return /* @__PURE__ */ jsx(
57
+ "span",
58
+ {
59
+ ref,
60
+ role: "link",
61
+ "aria-current": "page",
62
+ "aria-disabled": "true",
63
+ className: clsx("ds-breadcrumb__page", className),
64
+ ...props
65
+ }
66
+ );
67
+ });
68
+ BreadcrumbPage.displayName = "BreadcrumbPage";
69
+ var BreadcrumbSeparator = React.forwardRef(({ className, children, ...props }, ref) => {
70
+ return /* @__PURE__ */ jsx(
71
+ "li",
72
+ {
73
+ ref,
74
+ role: "presentation",
75
+ "aria-hidden": "true",
76
+ className: clsx("ds-breadcrumb__separator", className),
77
+ ...props,
78
+ children: children ?? "/"
79
+ }
80
+ );
81
+ });
82
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
83
+ var BreadcrumbEllipsis = React.forwardRef(({ className, ...props }, ref) => {
84
+ return /* @__PURE__ */ jsx(
85
+ "span",
86
+ {
87
+ ref,
88
+ className: clsx("ds-breadcrumb__ellipsis", className),
89
+ ...props,
90
+ children: "\u2026"
91
+ }
92
+ );
93
+ });
94
+ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
95
+
96
+ export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
97
+ //# sourceMappingURL=out.js.map
98
+ //# sourceMappingURL=chunk-XU3OMQ7V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW;AAClB,SAAS,YAAY;AACrB,OAAO,UAAU;AAgCX;AAHC,IAAM,aAAa,MAAM;AAAA,EAC9B,CAAC,EAAE,WAAW,cAAc,YAAY,cAAc,GAAG,MAAM,GAAG,QAAQ;AACxE,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,cAAY;AAAA,QACZ,WAAW,KAAK,iBAAiB,SAAS;AAAA,QACzC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;AAQlB,IAAM,iBAAiB,MAAM,WAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,KAAK,uBAAuB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,eAAe,cAAc;AAQtB,IAAM,iBAAiB,MAAM,WAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,KAAK,uBAAuB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,eAAe,cAAc;AAetB,IAAM,iBAAiB,MAAM,WAGlC,CAAC,EAAE,WAAW,UAAU,OAAO,GAAG,MAAM,GAAG,QAAQ;AACnD,QAAM,OAAO,UAAU,OAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,KAAK,uBAAuB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,eAAe,cAAc;AAQtB,IAAM,iBAAiB,MAAM,WAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,gBAAa;AAAA,MACb,iBAAc;AAAA,MACd,WAAW,KAAK,uBAAuB,SAAS;AAAA,MAC/C,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,eAAe,cAAc;AAQtB,IAAM,sBAAsB,MAAM,WAGvC,CAAC,EAAE,WAAW,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC5C,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,WAAW,KAAK,4BAA4B,SAAS;AAAA,MACpD,GAAG;AAAA,MAEH,sBAAY;AAAA;AAAA,EACf;AAEJ,CAAC;AAED,oBAAoB,cAAc;AAQ3B,IAAM,qBAAqB,MAAM,WAGtC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,KAAK,2BAA2B,SAAS;AAAA,MACnD,GAAG;AAAA,MACL;AAAA;AAAA,EAED;AAEJ,CAAC;AAED,mBAAmB,cAAc","sourcesContent":["import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport './Breadcrumb.css';\n\n/* ==========================================================================\n Breadcrumb (nav)\n ========================================================================== */\n\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {\n /** Override the default aria-label for the nav element. @default \"Breadcrumb\" */\n 'aria-label'?: string;\n}\n\n/**\n * Navigation breadcrumb trail. Wrap `BreadcrumbList`, `BreadcrumbItem`,\n * `BreadcrumbLink`, and `BreadcrumbPage` inside this root element.\n *\n * @example\n * <Breadcrumb>\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Current</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumb>\n */\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ className, 'aria-label': ariaLabel = 'Breadcrumb', ...props }, ref) => {\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={clsx('ds-breadcrumb', className)}\n {...props}\n />\n );\n },\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n\n/* ==========================================================================\n BreadcrumbList (ol)\n ========================================================================== */\n\nexport type BreadcrumbListProps = React.OlHTMLAttributes<HTMLOListElement>;\n\nexport const BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n BreadcrumbListProps\n>(({ className, ...props }, ref) => {\n return (\n <ol\n ref={ref}\n className={clsx('ds-breadcrumb__list', className)}\n {...props}\n />\n );\n});\n\nBreadcrumbList.displayName = 'BreadcrumbList';\n\n/* ==========================================================================\n BreadcrumbItem (li)\n ========================================================================== */\n\nexport type BreadcrumbItemProps = React.LiHTMLAttributes<HTMLLIElement>;\n\nexport const BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n BreadcrumbItemProps\n>(({ className, ...props }, ref) => {\n return (\n <li\n ref={ref}\n className={clsx('ds-breadcrumb__item', className)}\n {...props}\n />\n );\n});\n\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\n/* ==========================================================================\n BreadcrumbLink (a)\n ========================================================================== */\n\nexport interface BreadcrumbLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * When true, renders its child as the root element via Radix Slot.\n * Use this to compose with routing Link components.\n */\n asChild?: boolean;\n}\n\nexport const BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n BreadcrumbLinkProps\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n ref={ref}\n className={clsx('ds-breadcrumb__link', className)}\n {...props}\n />\n );\n});\n\nBreadcrumbLink.displayName = 'BreadcrumbLink';\n\n/* ==========================================================================\n BreadcrumbPage (span — current page)\n ========================================================================== */\n\nexport type BreadcrumbPageProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n BreadcrumbPageProps\n>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n role=\"link\"\n aria-current=\"page\"\n aria-disabled=\"true\"\n className={clsx('ds-breadcrumb__page', className)}\n {...props}\n />\n );\n});\n\nBreadcrumbPage.displayName = 'BreadcrumbPage';\n\n/* ==========================================================================\n BreadcrumbSeparator (li — decorative)\n ========================================================================== */\n\nexport type BreadcrumbSeparatorProps = React.LiHTMLAttributes<HTMLLIElement>;\n\nexport const BreadcrumbSeparator = React.forwardRef<\n HTMLLIElement,\n BreadcrumbSeparatorProps\n>(({ className, children, ...props }, ref) => {\n return (\n <li\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={clsx('ds-breadcrumb__separator', className)}\n {...props}\n >\n {children ?? '/'}\n </li>\n );\n});\n\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\n\n/* ==========================================================================\n BreadcrumbEllipsis (span — truncation indicator)\n ========================================================================== */\n\nexport type BreadcrumbEllipsisProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const BreadcrumbEllipsis = React.forwardRef<\n HTMLSpanElement,\n BreadcrumbEllipsisProps\n>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={clsx('ds-breadcrumb__ellipsis', className)}\n {...props}\n >\n &hellip;\n </span>\n );\n});\n\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\n"]}