@particle-academy/react-fancy 5.28.1 → 5.29.0

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 (155) hide show
  1. package/dist/{FieldMode.context-DNyItEKV.d.ts → FieldMode.context-Bl41F2WF.d.ts} +2 -2
  2. package/dist/{FieldMode.context-BOShROIw.d.cts → FieldMode.context-CU5h1CyF.d.cts} +2 -2
  3. package/dist/{Timeline-Cvrd7N7-.d.ts → Timeline-B-3JFX43.d.ts} +1 -1
  4. package/dist/{Timeline-7zHhIk3P.d.cts → Timeline-BSk0X2nV.d.cts} +1 -1
  5. package/dist/autocomplete.d.cts +2 -2
  6. package/dist/autocomplete.d.ts +2 -2
  7. package/dist/badge.cjs +2 -2
  8. package/dist/badge.d.cts +1 -1
  9. package/dist/badge.d.ts +1 -1
  10. package/dist/badge.js +1 -1
  11. package/dist/breadcrumbs.d.cts +1 -1
  12. package/dist/breadcrumbs.d.ts +1 -1
  13. package/dist/button.cjs +3 -3
  14. package/dist/button.d.cts +1 -1
  15. package/dist/button.d.ts +1 -1
  16. package/dist/button.js +1 -1
  17. package/dist/callout.cjs +2 -2
  18. package/dist/callout.d.cts +1 -1
  19. package/dist/callout.d.ts +1 -1
  20. package/dist/callout.js +1 -1
  21. package/dist/checkbox-group.d.cts +2 -2
  22. package/dist/checkbox-group.d.ts +2 -2
  23. package/dist/checkbox.d.cts +2 -2
  24. package/dist/checkbox.d.ts +2 -2
  25. package/dist/{chunk-ZDVVE4OV.js → chunk-2HGYDDIQ.js} +6 -6
  26. package/dist/{chunk-ZDVVE4OV.js.map → chunk-2HGYDDIQ.js.map} +1 -1
  27. package/dist/{chunk-ICT477LK.cjs → chunk-5TUZENNJ.cjs} +4 -4
  28. package/dist/{chunk-ICT477LK.cjs.map → chunk-5TUZENNJ.cjs.map} +1 -1
  29. package/dist/{chunk-EWRP6KCY.js → chunk-6FCQD2KQ.js} +14 -2
  30. package/dist/chunk-6FCQD2KQ.js.map +1 -0
  31. package/dist/{chunk-QJKWBU3I.js → chunk-6ZDXG5VC.js} +5 -2
  32. package/dist/chunk-6ZDXG5VC.js.map +1 -0
  33. package/dist/{chunk-AT5OG5N4.js → chunk-7JDVCQXD.js} +8 -2
  34. package/dist/chunk-7JDVCQXD.js.map +1 -0
  35. package/dist/{chunk-BYKTW7J5.js → chunk-B4PFNSX7.js} +3 -3
  36. package/dist/{chunk-BYKTW7J5.js.map → chunk-B4PFNSX7.js.map} +1 -1
  37. package/dist/{chunk-XQNYFXBY.cjs → chunk-B5KK7NYP.cjs} +5 -2
  38. package/dist/chunk-B5KK7NYP.cjs.map +1 -0
  39. package/dist/{chunk-JX6NKLQV.cjs → chunk-FEUAZW3X.cjs} +22 -22
  40. package/dist/{chunk-JX6NKLQV.cjs.map → chunk-FEUAZW3X.cjs.map} +1 -1
  41. package/dist/{chunk-VYQI4R6S.js → chunk-G6VMNSCM.js} +8 -2
  42. package/dist/chunk-G6VMNSCM.js.map +1 -0
  43. package/dist/{chunk-GHAZOIEG.cjs → chunk-H6PXIB35.cjs} +6 -6
  44. package/dist/{chunk-GHAZOIEG.cjs.map → chunk-H6PXIB35.cjs.map} +1 -1
  45. package/dist/{chunk-EJHAIXAE.cjs → chunk-LCNHEYIM.cjs} +8 -2
  46. package/dist/chunk-LCNHEYIM.cjs.map +1 -0
  47. package/dist/{chunk-H5OPZEVQ.cjs → chunk-MOU6O324.cjs} +14 -2
  48. package/dist/chunk-MOU6O324.cjs.map +1 -0
  49. package/dist/{chunk-YM6F2JIT.js → chunk-P7PKK5BO.js} +11 -2
  50. package/dist/chunk-P7PKK5BO.js.map +1 -0
  51. package/dist/{chunk-RN2EW7CK.cjs → chunk-RLMU3NHQ.cjs} +8 -2
  52. package/dist/chunk-RLMU3NHQ.cjs.map +1 -0
  53. package/dist/{chunk-6QVJY3RM.cjs → chunk-RWOH2ADL.cjs} +11 -2
  54. package/dist/chunk-RWOH2ADL.cjs.map +1 -0
  55. package/dist/{chunk-F2VJEXN2.cjs → chunk-UWL6U3L7.cjs} +8 -2
  56. package/dist/chunk-UWL6U3L7.cjs.map +1 -0
  57. package/dist/{chunk-RHDBBXHO.cjs → chunk-VRJTPXJ7.cjs} +5 -5
  58. package/dist/{chunk-RHDBBXHO.cjs.map → chunk-VRJTPXJ7.cjs.map} +1 -1
  59. package/dist/{chunk-SAF5642F.js → chunk-WEKQD4BQ.js} +3 -3
  60. package/dist/{chunk-SAF5642F.js.map → chunk-WEKQD4BQ.js.map} +1 -1
  61. package/dist/{chunk-4JGUPG22.js → chunk-ZXZJYVWP.js} +8 -2
  62. package/dist/chunk-ZXZJYVWP.js.map +1 -0
  63. package/dist/{chunk-IYTTEPCV.js → chunk-ZYVWKYPO.js} +4 -4
  64. package/dist/{chunk-IYTTEPCV.js.map → chunk-ZYVWKYPO.js.map} +1 -1
  65. package/dist/color-picker.d.cts +2 -2
  66. package/dist/color-picker.d.ts +2 -2
  67. package/dist/date-picker.d.cts +2 -2
  68. package/dist/date-picker.d.ts +2 -2
  69. package/dist/dropdown.d.cts +1 -1
  70. package/dist/dropdown.d.ts +1 -1
  71. package/dist/editor.d.cts +2 -2
  72. package/dist/editor.d.ts +2 -2
  73. package/dist/field.d.cts +1 -1
  74. package/dist/field.d.ts +1 -1
  75. package/dist/{index-YSQnfXN-.d.cts → index-CEb-loCl.d.cts} +2 -2
  76. package/dist/{index-DWJGBEW9.d.ts → index-DeAJbVOn.d.ts} +2 -2
  77. package/dist/index.cjs +32 -32
  78. package/dist/index.d.cts +6 -6
  79. package/dist/index.d.ts +6 -6
  80. package/dist/index.js +10 -10
  81. package/dist/input.d.cts +2 -2
  82. package/dist/input.d.ts +2 -2
  83. package/dist/inputs.cjs +2 -2
  84. package/dist/inputs.d.cts +3 -3
  85. package/dist/inputs.d.ts +3 -3
  86. package/dist/inputs.js +1 -1
  87. package/dist/{inputs.types-vl3PAc4q.d.ts → inputs.types-DzGcqcPf.d.ts} +1 -1
  88. package/dist/{inputs.types-CJbAS14j.d.cts → inputs.types-duxPKadC.d.cts} +1 -1
  89. package/dist/json-editor.cjs +16 -16
  90. package/dist/json-editor.d.cts +3 -3
  91. package/dist/json-editor.d.ts +3 -3
  92. package/dist/json-editor.js +5 -5
  93. package/dist/magic-wand.cjs +4 -4
  94. package/dist/magic-wand.js +3 -3
  95. package/dist/menu.d.cts +1 -1
  96. package/dist/menu.d.ts +1 -1
  97. package/dist/mobile-menu.d.cts +1 -1
  98. package/dist/mobile-menu.d.ts +1 -1
  99. package/dist/mode.d.cts +3 -3
  100. package/dist/mode.d.ts +3 -3
  101. package/dist/multi-switch.d.cts +2 -2
  102. package/dist/multi-switch.d.ts +2 -2
  103. package/dist/navbar.d.cts +1 -1
  104. package/dist/navbar.d.ts +1 -1
  105. package/dist/otp-input.d.cts +2 -2
  106. package/dist/otp-input.d.ts +2 -2
  107. package/dist/popover.d.cts +1 -1
  108. package/dist/popover.d.ts +1 -1
  109. package/dist/progress.cjs +2 -2
  110. package/dist/progress.d.cts +1 -1
  111. package/dist/progress.d.ts +1 -1
  112. package/dist/progress.js +1 -1
  113. package/dist/prompt-input.cjs +3 -3
  114. package/dist/prompt-input.js +2 -2
  115. package/dist/radio-group.d.cts +2 -2
  116. package/dist/radio-group.d.ts +2 -2
  117. package/dist/reason-tag.cjs +3 -3
  118. package/dist/reason-tag.js +2 -2
  119. package/dist/select.d.cts +2 -2
  120. package/dist/select.d.ts +2 -2
  121. package/dist/sidebar.d.cts +1 -1
  122. package/dist/sidebar.d.ts +1 -1
  123. package/dist/slider.d.cts +2 -2
  124. package/dist/slider.d.ts +2 -2
  125. package/dist/styles.css +1 -1
  126. package/dist/styles.css.map +1 -1
  127. package/dist/switch.cjs +2 -2
  128. package/dist/switch.d.cts +2 -2
  129. package/dist/switch.d.ts +2 -2
  130. package/dist/switch.js +1 -1
  131. package/dist/textarea.d.cts +2 -2
  132. package/dist/textarea.d.ts +2 -2
  133. package/dist/time-picker.d.cts +2 -2
  134. package/dist/time-picker.d.ts +2 -2
  135. package/dist/timeline.cjs +4 -4
  136. package/dist/timeline.d.cts +3 -3
  137. package/dist/timeline.d.ts +3 -3
  138. package/dist/timeline.js +1 -1
  139. package/dist/tooltip.d.cts +1 -1
  140. package/dist/tooltip.d.ts +1 -1
  141. package/dist/{types-8Sv0rCjw.d.cts → types-DJI492iY.d.cts} +12 -3
  142. package/dist/{types-8Sv0rCjw.d.ts → types-DJI492iY.d.ts} +12 -3
  143. package/package.json +1 -1
  144. package/dist/chunk-4JGUPG22.js.map +0 -1
  145. package/dist/chunk-6QVJY3RM.cjs.map +0 -1
  146. package/dist/chunk-AT5OG5N4.js.map +0 -1
  147. package/dist/chunk-EJHAIXAE.cjs.map +0 -1
  148. package/dist/chunk-EWRP6KCY.js.map +0 -1
  149. package/dist/chunk-F2VJEXN2.cjs.map +0 -1
  150. package/dist/chunk-H5OPZEVQ.cjs.map +0 -1
  151. package/dist/chunk-QJKWBU3I.js.map +0 -1
  152. package/dist/chunk-RN2EW7CK.cjs.map +0 -1
  153. package/dist/chunk-VYQI4R6S.js.map +0 -1
  154. package/dist/chunk-XQNYFXBY.cjs.map +0 -1
  155. package/dist/chunk-YM6F2JIT.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/styles.css"],"sourcesContent":["/* @particle-academy/react-fancy — base styles + animations */\n\n/* ─── Brand colour scheme ────────────────────────────────────────────────────\n Three token families every Fancy package can rely on, so a component never\n has to invent a palette or hardcode a literal:\n\n brand one accent — the thing a consumer rebrands first\n primary-* the accent as a full 50→950 scale\n secondary-* the NEUTRAL scale for surfaces, borders and body text\n\n Why this exists: packages were already writing `bg-brand`, `text-primary-600`\n and `border-secondary-200` against tokens nothing defined. Tailwind generated\n no such utility, the class silently resolved to nothing, and the component\n rendered unstyled — correct markup, no colour, no error. Defining them here\n turns those classes into a contract instead of a hope.\n\n SECONDARY INVERTS WITH THE THEME. `text-secondary-900` means \"strongest\n foreground\", not \"nearly black\" — so it stays readable on a dark surface.\n That distinction is the whole point: mixing a literal background (`bg-white`)\n with a semantic foreground (`text-secondary-900`) is what produced\n white-on-white in a dark host.\n\n OVERRIDE IT. Redefine any of these in your own `@theme` (or on `:root`) and\n yours wins — nothing here is `!important`, and the utilities read the variable\n rather than baking a value in:\n\n @theme { --color-brand: var(--color-emerald-600); }\n ──────────────────────────────────────────────────────────────────────────── */\n@theme {\n --color-brand: var(--color-violet-600);\n\n --color-primary-50: var(--color-violet-50);\n --color-primary-100: var(--color-violet-100);\n --color-primary-200: var(--color-violet-200);\n --color-primary-300: var(--color-violet-300);\n --color-primary-400: var(--color-violet-400);\n --color-primary-500: var(--color-violet-500);\n --color-primary-600: var(--color-violet-600);\n --color-primary-700: var(--color-violet-700);\n --color-primary-800: var(--color-violet-800);\n --color-primary-900: var(--color-violet-900);\n --color-primary-950: var(--color-violet-950);\n\n /* Light-theme defaults: 50 = faintest surface, 900/950 = strongest text. */\n --color-secondary-50: var(--color-zinc-50);\n --color-secondary-100: var(--color-zinc-100);\n --color-secondary-200: var(--color-zinc-200);\n --color-secondary-300: var(--color-zinc-300);\n --color-secondary-400: var(--color-zinc-400);\n --color-secondary-500: var(--color-zinc-500);\n --color-secondary-600: var(--color-zinc-600);\n --color-secondary-700: var(--color-zinc-700);\n --color-secondary-800: var(--color-zinc-800);\n --color-secondary-900: var(--color-zinc-900);\n --color-secondary-950: var(--color-zinc-950);\n}\n\n@layer base {\n\n/* ─── Progress (circular) — named diameters ──────────────────────────────────\n These ship as real CSS rather than Tailwind classes on the element, because a\n consumer who has not @sourced this package gets no generated utilities and\n the ring would render with NO SIZE at all. They were inline styles before,\n which always worked but could not be overridden by className (issue #17).\n\n Being inside @layer base, a className utility now beats them — which is the\n whole point, and the reason #20 had to land first. */\n[data-react-fancy-progress][data-size=\"sm\"] { width: 2rem; height: 2rem; }\n[data-react-fancy-progress][data-size=\"md\"] { width: 3rem; height: 3rem; }\n[data-react-fancy-progress][data-size=\"lg\"] { width: 4rem; height: 4rem; }\n\n\n\n/* Dark: the neutral scale flips, so \"900\" still means strongest foreground and\n \"50\" still means faintest surface. Wrapped in :where() for zero specificity,\n matching the rest of this file — any consumer override beats it. */\n:where(.dark) {\n --color-secondary-50: var(--color-zinc-950);\n --color-secondary-100: var(--color-zinc-900);\n --color-secondary-200: var(--color-zinc-800);\n --color-secondary-300: var(--color-zinc-700);\n --color-secondary-400: var(--color-zinc-600);\n --color-secondary-500: var(--color-zinc-500);\n --color-secondary-600: var(--color-zinc-400);\n --color-secondary-700: var(--color-zinc-300);\n --color-secondary-800: var(--color-zinc-200);\n --color-secondary-900: var(--color-zinc-100);\n --color-secondary-950: var(--color-zinc-50);\n}\n\n/* ─── Input & Field defaults ─────────────────────────────────────────────────\n Better UX out of the box: spacing between stacked fields, smooth transitions,\n and polished dark-mode defaults. All overridable via data-attribute selectors.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* Field spacing is the CONTAINER's job, not the field's.\n ────────────────────────────────────────────────────────────────────────────\n This used to be:\n\n [data-react-fancy-field] + [data-react-fancy-field] { margin-top: 1rem; }\n\n An adjacent-sibling selector cannot know which way its parent lays children\n out. Stacked vertically it read as spacing; inside a `grid-cols-2` row it\n pushed the right-hand cell 16px down, and `items-start` could not fix it\n because a margin is not alignment. The only escape was wrapping every field\n in a plain <div> so each became an only-child.\n\n Space fields with the container instead — `space-y-4`, or `gap-4` on a flex\n or grid parent. A container knows its own axis; a sibling selector never\n can. See CHANGELOG 5.17.0 for the migration.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* Smooth transitions on all text inputs, selects, and textareas */\n[data-react-fancy-input] input,\n[data-react-fancy-textarea],\n[data-react-fancy-select],\n[data-react-fancy-date-picker],\n[data-react-fancy-autocomplete] input,\n[data-react-fancy-pillbox],\n[data-react-fancy-otp-input] input,\n[data-react-fancy-time-picker] input,\n[data-react-fancy-color-picker] input {\n transition: border-color 0.15s ease, box-shadow 0.15s ease,\n background-color 0.15s ease;\n}\n\n/* Dark-mode input refinements — slightly darker bg for contrast against page */\n/* ─── Inherent dark-mode defaults ────────────────────────────────────────────\n Every rule below is wrapped in :where() so it carries ZERO specificity, which\n buys two properties at once:\n 1. Inherent — a sensible dark appearance ships out of the box, even when the\n consumer's Tailwind build doesn't generate react-fancy's `dark:` utility\n classes (e.g. they didn't @source the package). This is what lets the\n overlays (Dropdown, Menu, Popover, …) go dark on their own.\n 2. Override-friendly — because specificity is 0, ANY consumer override wins:\n a plain `dark:bg-…` utility, a custom class, or the component's own\n `dark:` class (when it IS generated) all take precedence — no !important,\n no need to target the data-attribute.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* Inputs / selects / textareas — darker bg for contrast against the page */\n:where(.dark [data-react-fancy-input] input),\n:where(.dark [data-react-fancy-textarea]),\n:where(.dark [data-react-fancy-select]),\n:where(.dark [data-react-fancy-date-picker]),\n:where(.dark [data-react-fancy-autocomplete] input),\n:where(.dark [data-react-fancy-pillbox]),\n:where(.dark [data-react-fancy-otp-input] input),\n:where(.dark [data-react-fancy-time-picker] input) {\n background-color: #1e1e24;\n border-color: #3f3f46;\n}\n\n/* Focus ring — brighter border + subtle glow */\n:where(.dark [data-react-fancy-input] input:focus),\n:where(.dark [data-react-fancy-textarea]:focus),\n:where(.dark [data-react-fancy-select]:focus),\n:where(.dark [data-react-fancy-date-picker]:focus),\n:where(.dark [data-react-fancy-autocomplete] input:focus),\n:where(.dark [data-react-fancy-otp-input] input:focus),\n:where(.dark [data-react-fancy-time-picker] input:focus) {\n border-color: #60a5fa;\n box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15);\n}\n\n/* Field labels — brighter for readability */\n:where(.dark [data-react-fancy-field] > label:first-child) {\n color: #f4f4f5;\n}\n\n/* Checkbox & radio */\n:where(.dark [data-react-fancy-checkbox] input),\n:where(.dark [data-react-fancy-radio-group] input) {\n background-color: #1e1e24;\n border-color: #3f3f46;\n}\n\n/* Switch unchecked track */\n:where(.dark [data-react-fancy-switch] button[aria-checked=\"false\"]) {\n background-color: #3f3f46;\n}\n\n/* Input wrapper affixes */\n:where(.dark [data-react-fancy-input-wrapper] > span:first-child),\n:where(.dark [data-react-fancy-input-wrapper] > span:last-child) {\n border-color: #3f3f46;\n background-color: #27272a;\n}\n\n/* Date picker icon (calendar, clock) */\n:where(.dark [data-react-fancy-date-picker]::-webkit-calendar-picker-indicator) {\n filter: invert(0.8);\n}\n\n/* ─── Overlays — inherent dark surfaces ──────────────────────────────────────\n Dropdown / Menu / Popover / ContextMenu / MobileMenu flyout / Modal / Toast.\n Mirrors the components' own `dark:` utilities (zinc-900 surface, zinc-700\n border, zinc-300 text) so overlays render correctly in dark mode WITHOUT the\n consumer @sourcing react-fancy. When those utilities ARE generated they win\n (specificity 0 here), so there's no drift or double-styling. */\n:where(.dark [data-react-fancy-dropdown]),\n:where(.dark [data-react-fancy-menu]),\n:where(.dark [data-react-fancy-popover]),\n:where(.dark [data-react-fancy-context-menu]),\n:where(.dark [data-react-fancy-context-menu-sub-content]),\n:where(.dark [data-react-fancy-mobile-menu-flyout]),\n:where(.dark [data-react-fancy-modal]),\n:where(.dark [data-react-fancy-toast-item]) {\n background-color: #18181b; /* zinc-900 */\n border-color: #3f3f46; /* zinc-700 */\n color: #d4d4d8; /* zinc-300 */\n}\n\n/* Overlay item hover states */\n:where(.dark [data-react-fancy-dropdown-item]:hover),\n:where(.dark [data-react-fancy-menu-item]:hover),\n:where(.dark [data-react-fancy-context-menu-item]:hover) {\n background-color: #27272a; /* zinc-800 */\n}\n\n/* Overlay separators */\n:where(.dark [data-react-fancy-dropdown-separator]),\n:where(.dark [data-react-fancy-context-menu-separator]) {\n background-color: #3f3f46; /* zinc-700 */\n}\n\n/* ─── Media viewer — transparency checkerboard ───────────────────────────────\n Backdrop for <ImageViewer> / <MediaViewer> so transparent images read clearly.\n Light + dark variants; the dark rule is wrapped in :where() (zero specificity)\n so it ships out of the box without the consumer @sourcing react-fancy. */\n.fancy-checkerboard {\n background-color: #ffffff;\n background-image:\n linear-gradient(45deg, #e5e7eb 25%, transparent 25%),\n linear-gradient(-45deg, #e5e7eb 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #e5e7eb 75%),\n linear-gradient(-45deg, transparent 75%, #e5e7eb 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n}\n\n:where(.dark) .fancy-checkerboard {\n background-color: #18181b; /* zinc-900 */\n background-image:\n linear-gradient(45deg, #27272a 25%, transparent 25%),\n linear-gradient(-45deg, #27272a 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #27272a 75%),\n linear-gradient(-45deg, transparent 75%, #27272a 75%);\n}\n}\n\n\n@keyframes fancy-fade-in {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-slide-left {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes fancy-slide-right {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@layer base {\n\n\n.fancy-fade-in {\n animation: fancy-fade-in 0.2s ease-out;\n}\n\n.fancy-slide-left {\n animation: fancy-slide-left 0.3s ease-out;\n}\n\n.fancy-slide-right {\n animation: fancy-slide-right 0.3s ease-out;\n}\n}\n\n\n/* Overlay / floating animations */\n\n@keyframes fancy-scale-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes fancy-slide-up {\n from {\n opacity: 0;\n transform: translateY(16px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes fancy-toast-in {\n from {\n opacity: 0;\n transform: translateX(100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes fancy-collapse-open {\n from {\n grid-template-rows: 0fr;\n }\n to {\n grid-template-rows: 1fr;\n }\n}\n\n@keyframes fancy-collapse-close {\n from {\n grid-template-rows: 1fr;\n }\n to {\n grid-template-rows: 0fr;\n }\n}\n\n@layer base {\n\n\n.fancy-scale-in {\n animation: fancy-scale-in 0.15s ease-out;\n}\n\n.fancy-slide-up {\n animation: fancy-slide-up 0.2s ease-out;\n}\n\n.fancy-fade-out {\n animation: fancy-fade-out 0.15s ease-in forwards;\n}\n\n.fancy-toast-in {\n animation: fancy-toast-in 0.3s ease-out;\n}\n\n.fancy-collapse-open {\n animation: fancy-collapse-open 0.2s ease-out forwards;\n}\n\n.fancy-collapse-close {\n animation: fancy-collapse-close 0.15s ease-in forwards;\n}\n}\n\n\n/* Mobile flyout slide animations */\n\n@keyframes fancy-slide-in-left {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes fancy-slide-out-left {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n}\n\n@keyframes fancy-slide-in-right {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n/* Avatar glow — a looping halo ring (box-shadow only, no reflow). Color comes\n from the --fancy-glow custom property set on the element. */\n@keyframes fancy-avatar-glow {\n 0% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--fancy-glow, #a855f7) 55%, transparent);\n opacity: 0.9;\n }\n 70% {\n box-shadow: 0 0 0 6px color-mix(in srgb, var(--fancy-glow, #a855f7) 0%, transparent);\n opacity: 0.5;\n }\n 100% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--fancy-glow, #a855f7) 0%, transparent);\n opacity: 0.9;\n }\n}\n\n@layer base {\n\n\n.fancy-avatar-glow {\n position: absolute;\n inset: 0;\n border-radius: 9999px;\n pointer-events: none;\n box-shadow:\n 0 0 0 2px color-mix(in srgb, var(--fancy-glow, #a855f7) 70%, transparent),\n 0 0 10px 0 color-mix(in srgb, var(--fancy-glow, #a855f7) 45%, transparent);\n animation: fancy-avatar-glow 1.6s ease-out infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fancy-avatar-glow {\n animation: none;\n }\n}\n}\n\n\n@keyframes fancy-slide-out-right {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n\n@layer base {\n\n\n.fancy-slide-in-left {\n animation: fancy-slide-in-left 0.25s ease-out;\n}\n\n.fancy-slide-out-left {\n animation: fancy-slide-out-left 0.2s ease-in forwards;\n}\n\n.fancy-slide-in-right {\n animation: fancy-slide-in-right 0.25s ease-out;\n}\n\n.fancy-slide-out-right {\n animation: fancy-slide-out-right 0.2s ease-in forwards;\n}\n}\n\n\n/* Vertical drawer edges. The horizontal pair above predates Drawer (it was\n built for MobileMenu.Flyout, which only ever opened left/right); these\n complete the set so `side=\"top\"`/`side=\"bottom\"` animate rather than pop. */\n\n@keyframes fancy-slide-in-top {\n from {\n transform: translateY(-100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-slide-out-top {\n from {\n transform: translateY(0);\n }\n to {\n transform: translateY(-100%);\n }\n}\n\n@keyframes fancy-slide-in-bottom {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-slide-out-bottom {\n from {\n transform: translateY(0);\n }\n to {\n transform: translateY(100%);\n }\n}\n\n@layer base {\n\n\n.fancy-slide-in-top {\n animation: fancy-slide-in-top 0.25s ease-out;\n}\n\n.fancy-slide-out-top {\n animation: fancy-slide-out-top 0.2s ease-in forwards;\n}\n\n.fancy-slide-in-bottom {\n animation: fancy-slide-in-bottom 0.25s ease-out;\n}\n\n.fancy-slide-out-bottom {\n animation: fancy-slide-out-bottom 0.2s ease-in forwards;\n}\n\n/* Reduced motion collapses the travel — but must NOT use `animation: none`.\n `useAnimation` unmounts on `animationend`, so removing the animation removes\n the event, and a closed drawer would stay in the DOM forever. A ~0 duration\n still fires it. */\n@media (prefers-reduced-motion: reduce) {\n .fancy-slide-in-left,\n .fancy-slide-out-left,\n .fancy-slide-in-right,\n .fancy-slide-out-right,\n .fancy-slide-in-top,\n .fancy-slide-out-top,\n .fancy-slide-in-bottom,\n .fancy-slide-out-bottom {\n animation-duration: 0.01ms;\n }\n}\n\n/* ─── Marquee ────────────────────────────────────────────────────────────────\n Edge-to-edge auto-scrolling strip. The track holds two identical copies of\n the content; translateX(-50%) over one loop shifts exactly one copy, so the\n wrap is seamless. Duration/gap/fade arrive as custom properties set by the\n component. No animation under prefers-reduced-motion.\n ──────────────────────────────────────────────────────────────────────────── */\n\n[data-react-fancy-marquee] {\n overflow: hidden;\n width: 100%;\n}\n\n.fancy-marquee--fade {\n -webkit-mask-image: linear-gradient(\n to right,\n transparent,\n black var(--fancy-marquee-fade, 48px),\n black calc(100% - var(--fancy-marquee-fade, 48px)),\n transparent\n );\n mask-image: linear-gradient(\n to right,\n transparent,\n black var(--fancy-marquee-fade, 48px),\n black calc(100% - var(--fancy-marquee-fade, 48px)),\n transparent\n );\n}\n\n.fancy-marquee__track {\n display: flex;\n width: max-content;\n animation: fancy-marquee var(--fancy-marquee-duration, 40s) linear infinite;\n will-change: transform;\n}\n\n[data-react-fancy-marquee][data-direction=\"right\"] .fancy-marquee__track {\n animation-direction: reverse;\n}\n\n.fancy-marquee--pause-hover:hover .fancy-marquee__track,\n[data-react-fancy-marquee][data-paused] .fancy-marquee__track {\n animation-play-state: paused;\n}\n\n.fancy-marquee__group {\n display: flex;\n flex: none;\n}\n\n.fancy-marquee__unit {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--fancy-marquee-gap, 40px);\n padding-inline-end: var(--fancy-marquee-gap, 40px);\n white-space: nowrap;\n}\n\n.fancy-marquee__item,\n.fancy-marquee__separator {\n flex: none;\n}\n}\n\n\n@keyframes fancy-marquee {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-50%);\n }\n}\n\n@layer base {\n\n\n@media (prefers-reduced-motion: reduce) {\n .fancy-marquee__track {\n animation: none;\n }\n}\n}\n\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/styles.css"],"sourcesContent":["/* @particle-academy/react-fancy — base styles + animations */\n\n/* ─── Brand colour scheme ────────────────────────────────────────────────────\n Three token families every Fancy package can rely on, so a component never\n has to invent a palette or hardcode a literal:\n\n brand one accent — the thing a consumer rebrands first\n primary-* the accent as a full 50→950 scale\n secondary-* the NEUTRAL scale for surfaces, borders and body text\n\n Why this exists: packages were already writing `bg-brand`, `text-primary-600`\n and `border-secondary-200` against tokens nothing defined. Tailwind generated\n no such utility, the class silently resolved to nothing, and the component\n rendered unstyled — correct markup, no colour, no error. Defining them here\n turns those classes into a contract instead of a hope.\n\n SECONDARY INVERTS WITH THE THEME. `text-secondary-900` means \"strongest\n foreground\", not \"nearly black\" — so it stays readable on a dark surface.\n That distinction is the whole point: mixing a literal background (`bg-white`)\n with a semantic foreground (`text-secondary-900`) is what produced\n white-on-white in a dark host.\n\n OVERRIDE IT. Redefine any of these in your own `@theme` (or on `:root`) and\n yours wins — nothing here is `!important`, and the utilities read the variable\n rather than baking a value in:\n\n @theme { --color-brand: var(--color-emerald-600); }\n ──────────────────────────────────────────────────────────────────────────── */\n@theme {\n /* THE HOST'S OWN COLOUR. `color=\"brand\"` on any component resolves to these.\n Three variables, not one: a generated hover assumes \"same hue, darker\",\n and a brand palette need not work that way — a navy whose hover is gold\n cannot be derived from navy. So the host states the hover instead of the\n kit guessing it.\n\n :root {\n --color-brand: #003057;\n --color-brand-contrast: #ffffff; text/icon ON the brand colour\n --color-brand-hover: #D4A017; need not be a shade of brand\n }\n\n Defaults keep the kit's violet so nothing changes for a host that never\n sets them. Soft/outline/ghost variants derive their tints with opacity\n modifiers (`bg-brand/10`), which is what lets three variables cover four\n variants without asking for a whole scale. */\n --color-brand: var(--color-violet-600);\n --color-brand-contrast: var(--color-white);\n --color-brand-hover: var(--color-violet-700);\n\n --color-primary-50: var(--color-violet-50);\n --color-primary-100: var(--color-violet-100);\n --color-primary-200: var(--color-violet-200);\n --color-primary-300: var(--color-violet-300);\n --color-primary-400: var(--color-violet-400);\n --color-primary-500: var(--color-violet-500);\n --color-primary-600: var(--color-violet-600);\n --color-primary-700: var(--color-violet-700);\n --color-primary-800: var(--color-violet-800);\n --color-primary-900: var(--color-violet-900);\n --color-primary-950: var(--color-violet-950);\n\n /* Light-theme defaults: 50 = faintest surface, 900/950 = strongest text. */\n --color-secondary-50: var(--color-zinc-50);\n --color-secondary-100: var(--color-zinc-100);\n --color-secondary-200: var(--color-zinc-200);\n --color-secondary-300: var(--color-zinc-300);\n --color-secondary-400: var(--color-zinc-400);\n --color-secondary-500: var(--color-zinc-500);\n --color-secondary-600: var(--color-zinc-600);\n --color-secondary-700: var(--color-zinc-700);\n --color-secondary-800: var(--color-zinc-800);\n --color-secondary-900: var(--color-zinc-900);\n --color-secondary-950: var(--color-zinc-950);\n}\n\n@layer base {\n\n/* ─── Progress (circular) — named diameters ──────────────────────────────────\n These ship as real CSS rather than Tailwind classes on the element, because a\n consumer who has not @sourced this package gets no generated utilities and\n the ring would render with NO SIZE at all. They were inline styles before,\n which always worked but could not be overridden by className (issue #17).\n\n Being inside @layer base, a className utility now beats them — which is the\n whole point, and the reason #20 had to land first. */\n[data-react-fancy-progress][data-size=\"sm\"] { width: 2rem; height: 2rem; }\n[data-react-fancy-progress][data-size=\"md\"] { width: 3rem; height: 3rem; }\n[data-react-fancy-progress][data-size=\"lg\"] { width: 4rem; height: 4rem; }\n\n\n\n/* Dark: the neutral scale flips, so \"900\" still means strongest foreground and\n \"50\" still means faintest surface. Wrapped in :where() for zero specificity,\n matching the rest of this file — any consumer override beats it. */\n:where(.dark) {\n --color-secondary-50: var(--color-zinc-950);\n --color-secondary-100: var(--color-zinc-900);\n --color-secondary-200: var(--color-zinc-800);\n --color-secondary-300: var(--color-zinc-700);\n --color-secondary-400: var(--color-zinc-600);\n --color-secondary-500: var(--color-zinc-500);\n --color-secondary-600: var(--color-zinc-400);\n --color-secondary-700: var(--color-zinc-300);\n --color-secondary-800: var(--color-zinc-200);\n --color-secondary-900: var(--color-zinc-100);\n --color-secondary-950: var(--color-zinc-50);\n}\n\n/* ─── Input & Field defaults ─────────────────────────────────────────────────\n Better UX out of the box: spacing between stacked fields, smooth transitions,\n and polished dark-mode defaults. All overridable via data-attribute selectors.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* Field spacing is the CONTAINER's job, not the field's.\n ────────────────────────────────────────────────────────────────────────────\n This used to be:\n\n [data-react-fancy-field] + [data-react-fancy-field] { margin-top: 1rem; }\n\n An adjacent-sibling selector cannot know which way its parent lays children\n out. Stacked vertically it read as spacing; inside a `grid-cols-2` row it\n pushed the right-hand cell 16px down, and `items-start` could not fix it\n because a margin is not alignment. The only escape was wrapping every field\n in a plain <div> so each became an only-child.\n\n Space fields with the container instead — `space-y-4`, or `gap-4` on a flex\n or grid parent. A container knows its own axis; a sibling selector never\n can. See CHANGELOG 5.17.0 for the migration.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* Smooth transitions on all text inputs, selects, and textareas */\n[data-react-fancy-input] input,\n[data-react-fancy-textarea],\n[data-react-fancy-select],\n[data-react-fancy-date-picker],\n[data-react-fancy-autocomplete] input,\n[data-react-fancy-pillbox],\n[data-react-fancy-otp-input] input,\n[data-react-fancy-time-picker] input,\n[data-react-fancy-color-picker] input {\n transition: border-color 0.15s ease, box-shadow 0.15s ease,\n background-color 0.15s ease;\n}\n\n/* Dark-mode input refinements — slightly darker bg for contrast against page */\n/* ─── Inherent dark-mode defaults ────────────────────────────────────────────\n Every rule below is wrapped in :where() so it carries ZERO specificity, which\n buys two properties at once:\n 1. Inherent — a sensible dark appearance ships out of the box, even when the\n consumer's Tailwind build doesn't generate react-fancy's `dark:` utility\n classes (e.g. they didn't @source the package). This is what lets the\n overlays (Dropdown, Menu, Popover, …) go dark on their own.\n 2. Override-friendly — because specificity is 0, ANY consumer override wins:\n a plain `dark:bg-…` utility, a custom class, or the component's own\n `dark:` class (when it IS generated) all take precedence — no !important,\n no need to target the data-attribute.\n ──────────────────────────────────────────────────────────────────────────── */\n\n/* Inputs / selects / textareas — darker bg for contrast against the page */\n:where(.dark [data-react-fancy-input] input),\n:where(.dark [data-react-fancy-textarea]),\n:where(.dark [data-react-fancy-select]),\n:where(.dark [data-react-fancy-date-picker]),\n:where(.dark [data-react-fancy-autocomplete] input),\n:where(.dark [data-react-fancy-pillbox]),\n:where(.dark [data-react-fancy-otp-input] input),\n:where(.dark [data-react-fancy-time-picker] input) {\n background-color: #1e1e24;\n border-color: #3f3f46;\n}\n\n/* Focus ring — brighter border + subtle glow */\n:where(.dark [data-react-fancy-input] input:focus),\n:where(.dark [data-react-fancy-textarea]:focus),\n:where(.dark [data-react-fancy-select]:focus),\n:where(.dark [data-react-fancy-date-picker]:focus),\n:where(.dark [data-react-fancy-autocomplete] input:focus),\n:where(.dark [data-react-fancy-otp-input] input:focus),\n:where(.dark [data-react-fancy-time-picker] input:focus) {\n border-color: #60a5fa;\n box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15);\n}\n\n/* Field labels — brighter for readability */\n:where(.dark [data-react-fancy-field] > label:first-child) {\n color: #f4f4f5;\n}\n\n/* Checkbox & radio */\n:where(.dark [data-react-fancy-checkbox] input),\n:where(.dark [data-react-fancy-radio-group] input) {\n background-color: #1e1e24;\n border-color: #3f3f46;\n}\n\n/* Switch unchecked track */\n:where(.dark [data-react-fancy-switch] button[aria-checked=\"false\"]) {\n background-color: #3f3f46;\n}\n\n/* Input wrapper affixes */\n:where(.dark [data-react-fancy-input-wrapper] > span:first-child),\n:where(.dark [data-react-fancy-input-wrapper] > span:last-child) {\n border-color: #3f3f46;\n background-color: #27272a;\n}\n\n/* Date picker icon (calendar, clock) */\n:where(.dark [data-react-fancy-date-picker]::-webkit-calendar-picker-indicator) {\n filter: invert(0.8);\n}\n\n/* ─── Overlays — inherent dark surfaces ──────────────────────────────────────\n Dropdown / Menu / Popover / ContextMenu / MobileMenu flyout / Modal / Toast.\n Mirrors the components' own `dark:` utilities (zinc-900 surface, zinc-700\n border, zinc-300 text) so overlays render correctly in dark mode WITHOUT the\n consumer @sourcing react-fancy. When those utilities ARE generated they win\n (specificity 0 here), so there's no drift or double-styling. */\n:where(.dark [data-react-fancy-dropdown]),\n:where(.dark [data-react-fancy-menu]),\n:where(.dark [data-react-fancy-popover]),\n:where(.dark [data-react-fancy-context-menu]),\n:where(.dark [data-react-fancy-context-menu-sub-content]),\n:where(.dark [data-react-fancy-mobile-menu-flyout]),\n:where(.dark [data-react-fancy-modal]),\n:where(.dark [data-react-fancy-toast-item]) {\n background-color: #18181b; /* zinc-900 */\n border-color: #3f3f46; /* zinc-700 */\n color: #d4d4d8; /* zinc-300 */\n}\n\n/* Overlay item hover states */\n:where(.dark [data-react-fancy-dropdown-item]:hover),\n:where(.dark [data-react-fancy-menu-item]:hover),\n:where(.dark [data-react-fancy-context-menu-item]:hover) {\n background-color: #27272a; /* zinc-800 */\n}\n\n/* Overlay separators */\n:where(.dark [data-react-fancy-dropdown-separator]),\n:where(.dark [data-react-fancy-context-menu-separator]) {\n background-color: #3f3f46; /* zinc-700 */\n}\n\n/* ─── Media viewer — transparency checkerboard ───────────────────────────────\n Backdrop for <ImageViewer> / <MediaViewer> so transparent images read clearly.\n Light + dark variants; the dark rule is wrapped in :where() (zero specificity)\n so it ships out of the box without the consumer @sourcing react-fancy. */\n.fancy-checkerboard {\n background-color: #ffffff;\n background-image:\n linear-gradient(45deg, #e5e7eb 25%, transparent 25%),\n linear-gradient(-45deg, #e5e7eb 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #e5e7eb 75%),\n linear-gradient(-45deg, transparent 75%, #e5e7eb 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n}\n\n:where(.dark) .fancy-checkerboard {\n background-color: #18181b; /* zinc-900 */\n background-image:\n linear-gradient(45deg, #27272a 25%, transparent 25%),\n linear-gradient(-45deg, #27272a 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #27272a 75%),\n linear-gradient(-45deg, transparent 75%, #27272a 75%);\n}\n}\n\n\n@keyframes fancy-fade-in {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-slide-left {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes fancy-slide-right {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@layer base {\n\n\n.fancy-fade-in {\n animation: fancy-fade-in 0.2s ease-out;\n}\n\n.fancy-slide-left {\n animation: fancy-slide-left 0.3s ease-out;\n}\n\n.fancy-slide-right {\n animation: fancy-slide-right 0.3s ease-out;\n}\n}\n\n\n/* Overlay / floating animations */\n\n@keyframes fancy-scale-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes fancy-slide-up {\n from {\n opacity: 0;\n transform: translateY(16px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes fancy-toast-in {\n from {\n opacity: 0;\n transform: translateX(100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes fancy-collapse-open {\n from {\n grid-template-rows: 0fr;\n }\n to {\n grid-template-rows: 1fr;\n }\n}\n\n@keyframes fancy-collapse-close {\n from {\n grid-template-rows: 1fr;\n }\n to {\n grid-template-rows: 0fr;\n }\n}\n\n@layer base {\n\n\n.fancy-scale-in {\n animation: fancy-scale-in 0.15s ease-out;\n}\n\n.fancy-slide-up {\n animation: fancy-slide-up 0.2s ease-out;\n}\n\n.fancy-fade-out {\n animation: fancy-fade-out 0.15s ease-in forwards;\n}\n\n.fancy-toast-in {\n animation: fancy-toast-in 0.3s ease-out;\n}\n\n.fancy-collapse-open {\n animation: fancy-collapse-open 0.2s ease-out forwards;\n}\n\n.fancy-collapse-close {\n animation: fancy-collapse-close 0.15s ease-in forwards;\n}\n}\n\n\n/* Mobile flyout slide animations */\n\n@keyframes fancy-slide-in-left {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes fancy-slide-out-left {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n}\n\n@keyframes fancy-slide-in-right {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n/* Avatar glow — a looping halo ring (box-shadow only, no reflow). Color comes\n from the --fancy-glow custom property set on the element. */\n@keyframes fancy-avatar-glow {\n 0% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--fancy-glow, #a855f7) 55%, transparent);\n opacity: 0.9;\n }\n 70% {\n box-shadow: 0 0 0 6px color-mix(in srgb, var(--fancy-glow, #a855f7) 0%, transparent);\n opacity: 0.5;\n }\n 100% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--fancy-glow, #a855f7) 0%, transparent);\n opacity: 0.9;\n }\n}\n\n@layer base {\n\n\n.fancy-avatar-glow {\n position: absolute;\n inset: 0;\n border-radius: 9999px;\n pointer-events: none;\n box-shadow:\n 0 0 0 2px color-mix(in srgb, var(--fancy-glow, #a855f7) 70%, transparent),\n 0 0 10px 0 color-mix(in srgb, var(--fancy-glow, #a855f7) 45%, transparent);\n animation: fancy-avatar-glow 1.6s ease-out infinite;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fancy-avatar-glow {\n animation: none;\n }\n}\n}\n\n\n@keyframes fancy-slide-out-right {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n\n@layer base {\n\n\n.fancy-slide-in-left {\n animation: fancy-slide-in-left 0.25s ease-out;\n}\n\n.fancy-slide-out-left {\n animation: fancy-slide-out-left 0.2s ease-in forwards;\n}\n\n.fancy-slide-in-right {\n animation: fancy-slide-in-right 0.25s ease-out;\n}\n\n.fancy-slide-out-right {\n animation: fancy-slide-out-right 0.2s ease-in forwards;\n}\n}\n\n\n/* Vertical drawer edges. The horizontal pair above predates Drawer (it was\n built for MobileMenu.Flyout, which only ever opened left/right); these\n complete the set so `side=\"top\"`/`side=\"bottom\"` animate rather than pop. */\n\n@keyframes fancy-slide-in-top {\n from {\n transform: translateY(-100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-slide-out-top {\n from {\n transform: translateY(0);\n }\n to {\n transform: translateY(-100%);\n }\n}\n\n@keyframes fancy-slide-in-bottom {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n}\n\n@keyframes fancy-slide-out-bottom {\n from {\n transform: translateY(0);\n }\n to {\n transform: translateY(100%);\n }\n}\n\n@layer base {\n\n\n.fancy-slide-in-top {\n animation: fancy-slide-in-top 0.25s ease-out;\n}\n\n.fancy-slide-out-top {\n animation: fancy-slide-out-top 0.2s ease-in forwards;\n}\n\n.fancy-slide-in-bottom {\n animation: fancy-slide-in-bottom 0.25s ease-out;\n}\n\n.fancy-slide-out-bottom {\n animation: fancy-slide-out-bottom 0.2s ease-in forwards;\n}\n\n/* Reduced motion collapses the travel — but must NOT use `animation: none`.\n `useAnimation` unmounts on `animationend`, so removing the animation removes\n the event, and a closed drawer would stay in the DOM forever. A ~0 duration\n still fires it. */\n@media (prefers-reduced-motion: reduce) {\n .fancy-slide-in-left,\n .fancy-slide-out-left,\n .fancy-slide-in-right,\n .fancy-slide-out-right,\n .fancy-slide-in-top,\n .fancy-slide-out-top,\n .fancy-slide-in-bottom,\n .fancy-slide-out-bottom {\n animation-duration: 0.01ms;\n }\n}\n\n/* ─── Marquee ────────────────────────────────────────────────────────────────\n Edge-to-edge auto-scrolling strip. The track holds two identical copies of\n the content; translateX(-50%) over one loop shifts exactly one copy, so the\n wrap is seamless. Duration/gap/fade arrive as custom properties set by the\n component. No animation under prefers-reduced-motion.\n ──────────────────────────────────────────────────────────────────────────── */\n\n[data-react-fancy-marquee] {\n overflow: hidden;\n width: 100%;\n}\n\n.fancy-marquee--fade {\n -webkit-mask-image: linear-gradient(\n to right,\n transparent,\n black var(--fancy-marquee-fade, 48px),\n black calc(100% - var(--fancy-marquee-fade, 48px)),\n transparent\n );\n mask-image: linear-gradient(\n to right,\n transparent,\n black var(--fancy-marquee-fade, 48px),\n black calc(100% - var(--fancy-marquee-fade, 48px)),\n transparent\n );\n}\n\n.fancy-marquee__track {\n display: flex;\n width: max-content;\n animation: fancy-marquee var(--fancy-marquee-duration, 40s) linear infinite;\n will-change: transform;\n}\n\n[data-react-fancy-marquee][data-direction=\"right\"] .fancy-marquee__track {\n animation-direction: reverse;\n}\n\n.fancy-marquee--pause-hover:hover .fancy-marquee__track,\n[data-react-fancy-marquee][data-paused] .fancy-marquee__track {\n animation-play-state: paused;\n}\n\n.fancy-marquee__group {\n display: flex;\n flex: none;\n}\n\n.fancy-marquee__unit {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--fancy-marquee-gap, 40px);\n padding-inline-end: var(--fancy-marquee-gap, 40px);\n white-space: nowrap;\n}\n\n.fancy-marquee__item,\n.fancy-marquee__separator {\n flex: none;\n}\n}\n\n\n@keyframes fancy-marquee {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-50%);\n }\n}\n\n@layer base {\n\n\n@media (prefers-reduced-motion: reduce) {\n .fancy-marquee__track {\n animation: none;\n }\n}\n}\n\n"],"mappings":"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","names":[]}
package/dist/switch.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('./chunk-OYZDSMNP.cjs');
4
- var chunkXQNYFXBY_cjs = require('./chunk-XQNYFXBY.cjs');
4
+ var chunkB5KK7NYP_cjs = require('./chunk-B5KK7NYP.cjs');
5
5
  require('./chunk-YLGTDBB2.cjs');
6
6
  require('./chunk-KJ22KE56.cjs');
7
7
  require('./chunk-L3V3BYVS.cjs');
@@ -12,7 +12,7 @@ require('./chunk-ZU5Q77OT.cjs');
12
12
 
13
13
  Object.defineProperty(exports, "Switch", {
14
14
  enumerable: true,
15
- get: function () { return chunkXQNYFXBY_cjs.Switch; }
15
+ get: function () { return chunkB5KK7NYP_cjs.Switch; }
16
16
  });
17
17
  //# sourceMappingURL=switch.cjs.map
18
18
  //# sourceMappingURL=switch.cjs.map
package/dist/switch.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { HTMLAttributes } from 'react';
3
- import { a as InputBaseProps } from './inputs.types-CJbAS14j.cjs';
4
- import { C as Color } from './types-8Sv0rCjw.cjs';
3
+ import { a as InputBaseProps } from './inputs.types-duxPKadC.cjs';
4
+ import { C as Color } from './types-DJI492iY.cjs';
5
5
 
6
6
  interface SwitchProps extends Omit<InputBaseProps, "label">, Omit<HTMLAttributes<HTMLDivElement>, "color" | "defaultChecked" | "onChange" | "id"> {
7
7
  checked?: boolean;
package/dist/switch.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { HTMLAttributes } from 'react';
3
- import { a as InputBaseProps } from './inputs.types-vl3PAc4q.js';
4
- import { C as Color } from './types-8Sv0rCjw.js';
3
+ import { a as InputBaseProps } from './inputs.types-DzGcqcPf.js';
4
+ import { C as Color } from './types-DJI492iY.js';
5
5
 
6
6
  interface SwitchProps extends Omit<InputBaseProps, "label">, Omit<HTMLAttributes<HTMLDivElement>, "color" | "defaultChecked" | "onChange" | "id"> {
7
7
  checked?: boolean;
package/dist/switch.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import './chunk-NW3GJWJ7.js';
2
- export { Switch } from './chunk-QJKWBU3I.js';
2
+ export { Switch } from './chunk-6ZDXG5VC.js';
3
3
  import './chunk-GFYSELJF.js';
4
4
  import './chunk-OL53XYHF.js';
5
5
  import './chunk-NRXK42LO.js';
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { TextareaHTMLAttributes } from 'react';
3
- import { a as InputBaseProps, I as InputAffixProps } from './inputs.types-CJbAS14j.cjs';
4
- import './types-8Sv0rCjw.cjs';
3
+ import { a as InputBaseProps, I as InputAffixProps } from './inputs.types-duxPKadC.cjs';
4
+ import './types-DJI492iY.cjs';
5
5
 
6
6
  interface TextareaProps extends InputBaseProps, InputAffixProps, Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "size" | "prefix"> {
7
7
  autoResize?: boolean;
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { TextareaHTMLAttributes } from 'react';
3
- import { a as InputBaseProps, I as InputAffixProps } from './inputs.types-vl3PAc4q.js';
4
- import './types-8Sv0rCjw.js';
3
+ import { a as InputBaseProps, I as InputAffixProps } from './inputs.types-DzGcqcPf.js';
4
+ import './types-DJI492iY.js';
5
5
 
6
6
  interface TextareaProps extends InputBaseProps, InputAffixProps, Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "size" | "prefix"> {
7
7
  autoResize?: boolean;
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
- import { F as FieldMode } from './inputs.types-CJbAS14j.cjs';
3
- import './types-8Sv0rCjw.cjs';
2
+ import { F as FieldMode } from './inputs.types-duxPKadC.cjs';
3
+ import './types-DJI492iY.cjs';
4
4
 
5
5
  interface TimePickerProps {
6
6
  value?: string;
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
- import { F as FieldMode } from './inputs.types-vl3PAc4q.js';
3
- import './types-8Sv0rCjw.js';
2
+ import { F as FieldMode } from './inputs.types-DzGcqcPf.js';
3
+ import './types-DJI492iY.js';
4
4
 
5
5
  interface TimePickerProps {
6
6
  value?: string;
package/dist/timeline.cjs CHANGED
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var chunkRN2EW7CK_cjs = require('./chunk-RN2EW7CK.cjs');
3
+ var chunkRLMU3NHQ_cjs = require('./chunk-RLMU3NHQ.cjs');
4
4
  require('./chunk-ZU5Q77OT.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Timeline", {
9
9
  enumerable: true,
10
- get: function () { return chunkRN2EW7CK_cjs.Timeline; }
10
+ get: function () { return chunkRLMU3NHQ_cjs.Timeline; }
11
11
  });
12
12
  Object.defineProperty(exports, "TimelineBlock", {
13
13
  enumerable: true,
14
- get: function () { return chunkRN2EW7CK_cjs.TimelineBlock; }
14
+ get: function () { return chunkRLMU3NHQ_cjs.TimelineBlock; }
15
15
  });
16
16
  Object.defineProperty(exports, "TimelineItem", {
17
17
  enumerable: true,
18
- get: function () { return chunkRN2EW7CK_cjs.TimelineItem; }
18
+ get: function () { return chunkRLMU3NHQ_cjs.TimelineItem; }
19
19
  });
20
20
  //# sourceMappingURL=timeline.cjs.map
21
21
  //# sourceMappingURL=timeline.cjs.map
@@ -1,7 +1,7 @@
1
- import { T as TimelineItemProps, a as TimelineBlockProps } from './Timeline-7zHhIk3P.cjs';
2
- export { b as Timeline, c as TimelineEvent, d as TimelineOrientation, e as TimelineProps, f as TimelineVariant } from './Timeline-7zHhIk3P.cjs';
1
+ import { T as TimelineItemProps, a as TimelineBlockProps } from './Timeline-BSk0X2nV.cjs';
2
+ export { b as Timeline, c as TimelineEvent, d as TimelineOrientation, e as TimelineProps, f as TimelineVariant } from './Timeline-BSk0X2nV.cjs';
3
3
  import * as react from 'react';
4
- import './types-8Sv0rCjw.cjs';
4
+ import './types-DJI492iY.cjs';
5
5
 
6
6
  declare const TimelineItem: react.ForwardRefExoticComponent<TimelineItemProps & react.RefAttributes<HTMLDivElement>>;
7
7
 
@@ -1,7 +1,7 @@
1
- import { T as TimelineItemProps, a as TimelineBlockProps } from './Timeline-Cvrd7N7-.js';
2
- export { b as Timeline, c as TimelineEvent, d as TimelineOrientation, e as TimelineProps, f as TimelineVariant } from './Timeline-Cvrd7N7-.js';
1
+ import { T as TimelineItemProps, a as TimelineBlockProps } from './Timeline-B-3JFX43.js';
2
+ export { b as Timeline, c as TimelineEvent, d as TimelineOrientation, e as TimelineProps, f as TimelineVariant } from './Timeline-B-3JFX43.js';
3
3
  import * as react from 'react';
4
- import './types-8Sv0rCjw.js';
4
+ import './types-DJI492iY.js';
5
5
 
6
6
  declare const TimelineItem: react.ForwardRefExoticComponent<TimelineItemProps & react.RefAttributes<HTMLDivElement>>;
7
7
 
package/dist/timeline.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Timeline, TimelineBlock, TimelineItem } from './chunk-AT5OG5N4.js';
1
+ export { Timeline, TimelineBlock, TimelineItem } from './chunk-7JDVCQXD.js';
2
2
  import './chunk-MMW2JGKZ.js';
3
3
  //# sourceMappingURL=timeline.js.map
4
4
  //# sourceMappingURL=timeline.js.map
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactElement, ReactNode } from 'react';
3
- import { P as Placement } from './types-8Sv0rCjw.cjs';
3
+ import { P as Placement } from './types-DJI492iY.cjs';
4
4
 
5
5
  interface TooltipProps {
6
6
  children: ReactElement;
package/dist/tooltip.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ReactElement, ReactNode } from 'react';
3
- import { P as Placement } from './types-8Sv0rCjw.js';
3
+ import { P as Placement } from './types-DJI492iY.js';
4
4
 
5
5
  interface TooltipProps {
6
6
  children: ReactElement;
@@ -41,10 +41,19 @@ interface NavigableProps {
41
41
  }
42
42
  /**
43
43
  * The full Tailwind v4 named color palette — every default hue, including all
44
- * five gray families. Components that accept a `color` should type it as this
45
- * so the whole palette is available.
44
+ * five gray families — plus `brand`, the host's own colour. Components that
45
+ * accept a `color` should type it as this so the whole palette is available.
46
+ *
47
+ * `brand` is not a hue. It resolves through three CSS variables the host sets
48
+ * once, rather than through a Tailwind scale:
49
+ *
50
+ * `--color-brand`, `--color-brand-contrast`, `--color-brand-hover`
51
+ *
52
+ * Three rather than one because a generated hover assumes "same hue, darker",
53
+ * and a brand palette need not work that way — navy whose hover is gold cannot
54
+ * be derived from navy by any amount of arithmetic. The host states it.
46
55
  */
47
- type Color = "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
56
+ type Color = "brand" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
48
57
  type Variant = "solid" | "outline" | "ghost" | "soft";
49
58
  /** Button accepts the full Tailwind v4 palette (alias of {@link Color}). */
50
59
  type ButtonColor = Color;
@@ -41,10 +41,19 @@ interface NavigableProps {
41
41
  }
42
42
  /**
43
43
  * The full Tailwind v4 named color palette — every default hue, including all
44
- * five gray families. Components that accept a `color` should type it as this
45
- * so the whole palette is available.
44
+ * five gray families — plus `brand`, the host's own colour. Components that
45
+ * accept a `color` should type it as this so the whole palette is available.
46
+ *
47
+ * `brand` is not a hue. It resolves through three CSS variables the host sets
48
+ * once, rather than through a Tailwind scale:
49
+ *
50
+ * `--color-brand`, `--color-brand-contrast`, `--color-brand-hover`
51
+ *
52
+ * Three rather than one because a generated hover assumes "same hue, darker",
53
+ * and a brand palette need not work that way — navy whose hover is gold cannot
54
+ * be derived from navy by any amount of arithmetic. The host states it.
46
55
  */
47
- type Color = "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
56
+ type Color = "brand" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
48
57
  type Variant = "solid" | "outline" | "ghost" | "soft";
49
58
  /** Button accepts the full Tailwind v4 palette (alias of {@link Color}). */
50
59
  type ButtonColor = Color;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@particle-academy/react-fancy",
3
- "version": "5.28.1",
3
+ "version": "5.29.0",
4
4
  "description": "React UI component library for Human+ UX — controlled, agent-bridgeable primitives",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Callout/Callout.colors.ts","../src/components/Callout/Callout.tsx"],"names":[],"mappings":"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","file":"chunk-4JGUPG22.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-callout-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const calloutContainer: Record<Color, string> = {\n slate: \"border-slate-500 bg-slate-50 text-slate-900 dark:border-slate-400 dark:bg-slate-950/50 dark:text-slate-100\",\n gray: \"border-gray-500 bg-gray-50 text-gray-900 dark:border-gray-400 dark:bg-gray-950/50 dark:text-gray-100\",\n zinc: \"border-zinc-500 bg-zinc-50 text-zinc-900 dark:border-zinc-400 dark:bg-zinc-950/50 dark:text-zinc-100\",\n neutral: \"border-neutral-500 bg-neutral-50 text-neutral-900 dark:border-neutral-400 dark:bg-neutral-950/50 dark:text-neutral-100\",\n stone: \"border-stone-500 bg-stone-50 text-stone-900 dark:border-stone-400 dark:bg-stone-950/50 dark:text-stone-100\",\n red: \"border-red-500 bg-red-50 text-red-900 dark:border-red-400 dark:bg-red-950/50 dark:text-red-100\",\n orange: \"border-orange-500 bg-orange-50 text-orange-900 dark:border-orange-400 dark:bg-orange-950/50 dark:text-orange-100\",\n amber: \"border-amber-500 bg-amber-50 text-amber-900 dark:border-amber-400 dark:bg-amber-950/50 dark:text-amber-100\",\n yellow: \"border-yellow-500 bg-yellow-50 text-yellow-900 dark:border-yellow-400 dark:bg-yellow-950/50 dark:text-yellow-100\",\n lime: \"border-lime-500 bg-lime-50 text-lime-900 dark:border-lime-400 dark:bg-lime-950/50 dark:text-lime-100\",\n green: \"border-green-500 bg-green-50 text-green-900 dark:border-green-400 dark:bg-green-950/50 dark:text-green-100\",\n emerald: \"border-emerald-500 bg-emerald-50 text-emerald-900 dark:border-emerald-400 dark:bg-emerald-950/50 dark:text-emerald-100\",\n teal: \"border-teal-500 bg-teal-50 text-teal-900 dark:border-teal-400 dark:bg-teal-950/50 dark:text-teal-100\",\n cyan: \"border-cyan-500 bg-cyan-50 text-cyan-900 dark:border-cyan-400 dark:bg-cyan-950/50 dark:text-cyan-100\",\n sky: \"border-sky-500 bg-sky-50 text-sky-900 dark:border-sky-400 dark:bg-sky-950/50 dark:text-sky-100\",\n blue: \"border-blue-500 bg-blue-50 text-blue-900 dark:border-blue-400 dark:bg-blue-950/50 dark:text-blue-100\",\n indigo: \"border-indigo-500 bg-indigo-50 text-indigo-900 dark:border-indigo-400 dark:bg-indigo-950/50 dark:text-indigo-100\",\n violet: \"border-violet-500 bg-violet-50 text-violet-900 dark:border-violet-400 dark:bg-violet-950/50 dark:text-violet-100\",\n purple: \"border-purple-500 bg-purple-50 text-purple-900 dark:border-purple-400 dark:bg-purple-950/50 dark:text-purple-100\",\n fuchsia: \"border-fuchsia-500 bg-fuchsia-50 text-fuchsia-900 dark:border-fuchsia-400 dark:bg-fuchsia-950/50 dark:text-fuchsia-100\",\n pink: \"border-pink-500 bg-pink-50 text-pink-900 dark:border-pink-400 dark:bg-pink-950/50 dark:text-pink-100\",\n rose: \"border-rose-500 bg-rose-50 text-rose-900 dark:border-rose-400 dark:bg-rose-950/50 dark:text-rose-100\",\n};\n\nexport const calloutIcon: Record<Color, string> = {\n slate: \"text-slate-500 dark:text-slate-400\",\n gray: \"text-gray-500 dark:text-gray-400\",\n zinc: \"text-zinc-500 dark:text-zinc-400\",\n neutral: \"text-neutral-500 dark:text-neutral-400\",\n stone: \"text-stone-500 dark:text-stone-400\",\n red: \"text-red-500 dark:text-red-400\",\n orange: \"text-orange-500 dark:text-orange-400\",\n amber: \"text-amber-500 dark:text-amber-400\",\n yellow: \"text-yellow-500 dark:text-yellow-400\",\n lime: \"text-lime-500 dark:text-lime-400\",\n green: \"text-green-500 dark:text-green-400\",\n emerald: \"text-emerald-500 dark:text-emerald-400\",\n teal: \"text-teal-500 dark:text-teal-400\",\n cyan: \"text-cyan-500 dark:text-cyan-400\",\n sky: \"text-sky-500 dark:text-sky-400\",\n blue: \"text-blue-500 dark:text-blue-400\",\n indigo: \"text-indigo-500 dark:text-indigo-400\",\n violet: \"text-violet-500 dark:text-violet-400\",\n purple: \"text-purple-500 dark:text-purple-400\",\n fuchsia: \"text-fuchsia-500 dark:text-fuchsia-400\",\n pink: \"text-pink-500 dark:text-pink-400\",\n rose: \"text-rose-500 dark:text-rose-400\",\n};\n","import { forwardRef } from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalloutProps } from \"./Callout.types\";\nimport { calloutContainer, calloutIcon } from \"./Callout.colors\";\n\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n children,\n color = \"blue\",\n icon,\n dismissible = false,\n onDismiss,\n className,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n role=\"alert\"\n data-react-fancy-callout=\"\"\n className={cn(\n \"flex items-start gap-3 rounded-lg border-l-4 p-4\",\n calloutContainer[color],\n className,\n )}\n {...props}\n >\n {icon && (\n <span className={cn(\"mt-0.5 shrink-0\", calloutIcon[color])}>\n {icon}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">{children}</div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className={cn(\n \"shrink-0 rounded p-0.5 opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-current\",\n )}\n aria-label=\"Dismiss\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n },\n);\n\nCallout.displayName = \"Callout\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Progress/Progress.colors.ts","../src/components/Progress/Progress.tsx"],"names":["forwardRef","jsxs","cn","jsx"],"mappings":"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","file":"chunk-6QVJY3RM.cjs","sourcesContent":["// AUTO-GENERATED by scripts/gen-progress-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const progressFill: Record<Color, string> = {\n slate: \"bg-slate-500 dark:bg-slate-400\",\n gray: \"bg-gray-500 dark:bg-gray-400\",\n zinc: \"bg-zinc-500 dark:bg-zinc-400\",\n neutral: \"bg-neutral-500 dark:bg-neutral-400\",\n stone: \"bg-stone-500 dark:bg-stone-400\",\n red: \"bg-red-500 dark:bg-red-400\",\n orange: \"bg-orange-500 dark:bg-orange-400\",\n amber: \"bg-amber-500 dark:bg-amber-400\",\n yellow: \"bg-yellow-500 dark:bg-yellow-400\",\n lime: \"bg-lime-500 dark:bg-lime-400\",\n green: \"bg-green-500 dark:bg-green-400\",\n emerald: \"bg-emerald-500 dark:bg-emerald-400\",\n teal: \"bg-teal-500 dark:bg-teal-400\",\n cyan: \"bg-cyan-500 dark:bg-cyan-400\",\n sky: \"bg-sky-500 dark:bg-sky-400\",\n blue: \"bg-blue-500 dark:bg-blue-400\",\n indigo: \"bg-indigo-500 dark:bg-indigo-400\",\n violet: \"bg-violet-500 dark:bg-violet-400\",\n purple: \"bg-purple-500 dark:bg-purple-400\",\n fuchsia: \"bg-fuchsia-500 dark:bg-fuchsia-400\",\n pink: \"bg-pink-500 dark:bg-pink-400\",\n rose: \"bg-rose-500 dark:bg-rose-400\",\n};\n\nexport const progressStroke: Record<Color, string> = {\n slate: \"stroke-slate-500 dark:stroke-slate-400\",\n gray: \"stroke-gray-500 dark:stroke-gray-400\",\n zinc: \"stroke-zinc-500 dark:stroke-zinc-400\",\n neutral: \"stroke-neutral-500 dark:stroke-neutral-400\",\n stone: \"stroke-stone-500 dark:stroke-stone-400\",\n red: \"stroke-red-500 dark:stroke-red-400\",\n orange: \"stroke-orange-500 dark:stroke-orange-400\",\n amber: \"stroke-amber-500 dark:stroke-amber-400\",\n yellow: \"stroke-yellow-500 dark:stroke-yellow-400\",\n lime: \"stroke-lime-500 dark:stroke-lime-400\",\n green: \"stroke-green-500 dark:stroke-green-400\",\n emerald: \"stroke-emerald-500 dark:stroke-emerald-400\",\n teal: \"stroke-teal-500 dark:stroke-teal-400\",\n cyan: \"stroke-cyan-500 dark:stroke-cyan-400\",\n sky: \"stroke-sky-500 dark:stroke-sky-400\",\n blue: \"stroke-blue-500 dark:stroke-blue-400\",\n indigo: \"stroke-indigo-500 dark:stroke-indigo-400\",\n violet: \"stroke-violet-500 dark:stroke-violet-400\",\n purple: \"stroke-purple-500 dark:stroke-purple-400\",\n fuchsia: \"stroke-fuchsia-500 dark:stroke-fuchsia-400\",\n pink: \"stroke-pink-500 dark:stroke-pink-400\",\n rose: \"stroke-rose-500 dark:stroke-rose-400\",\n};\n\nexport const progressText: Record<Color, string> = {\n slate: \"text-slate-600 dark:text-slate-400\",\n gray: \"text-gray-600 dark:text-gray-400\",\n zinc: \"text-zinc-600 dark:text-zinc-400\",\n neutral: \"text-neutral-600 dark:text-neutral-400\",\n stone: \"text-stone-600 dark:text-stone-400\",\n red: \"text-red-600 dark:text-red-400\",\n orange: \"text-orange-600 dark:text-orange-400\",\n amber: \"text-amber-600 dark:text-amber-400\",\n yellow: \"text-yellow-600 dark:text-yellow-400\",\n lime: \"text-lime-600 dark:text-lime-400\",\n green: \"text-green-600 dark:text-green-400\",\n emerald: \"text-emerald-600 dark:text-emerald-400\",\n teal: \"text-teal-600 dark:text-teal-400\",\n cyan: \"text-cyan-600 dark:text-cyan-400\",\n sky: \"text-sky-600 dark:text-sky-400\",\n blue: \"text-blue-600 dark:text-blue-400\",\n indigo: \"text-indigo-600 dark:text-indigo-400\",\n violet: \"text-violet-600 dark:text-violet-400\",\n purple: \"text-purple-600 dark:text-purple-400\",\n fuchsia: \"text-fuchsia-600 dark:text-fuchsia-400\",\n pink: \"text-pink-600 dark:text-pink-400\",\n rose: \"text-rose-600 dark:text-rose-400\",\n};\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { ProgressProps } from \"./Progress.types\";\nimport { progressFill, progressStroke, progressText } from \"./Progress.colors\";\n\ntype NamedSize = \"sm\" | \"md\" | \"lg\";\n\nconst barHeightClasses: Record<NamedSize, string> = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n};\n\nconst circularSizeMap: Record<NamedSize, number> = {\n sm: 32,\n md: 48,\n lg: 64,\n};\n\nconst namedStrokeWidth: Record<NamedSize, number> = { sm: 3, md: 4, lg: 5 };\n\nconst textSizeClasses: Record<NamedSize, string> = {\n sm: \"text-[8px]\",\n md: \"text-[10px]\",\n lg: \"text-xs\",\n};\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n value = 0,\n max = 100,\n variant = \"bar\",\n size = \"md\",\n strokeWidth: strokeWidthProp,\n color = \"blue\",\n indeterminate = false,\n showValue = false,\n className,\n trackClassName,\n fillClassName,\n ...rest\n },\n ref,\n ) => {\n // Class lookups need a named key; a pixel size sizes the ring itself and\n // leaves the type/bar scales on their default.\n const named: NamedSize = typeof size === \"number\" ? \"md\" : size;\n\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n if (variant === \"circular\") {\n const pixelSize = typeof size === \"number\" ? size : null;\n const diameter = pixelSize ?? circularSizeMap[named];\n // Scale with the circle when not told otherwise: a 5px stroke on a 152px\n // ring reads as a hairline, so a fixed default makes large sizes look\n // broken out of the box. The named scale keeps its exact old values.\n const strokeWidth =\n strokeWidthProp ??\n (pixelSize === null ? namedStrokeWidth[named] : Math.max(3, Math.round(diameter * 0.075)));\n const radius = (diameter - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = indeterminate ? circumference * 0.75 : circumference - (percentage / 100) * circumference;\n\n return (\n <div\n ref={ref}\n {...rest}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n data-react-fancy-progress=\"\"\n // The named diameters live in styles.css keyed off this, so they work\n // without the consumer's Tailwind generating anything — and, being\n // layered, a className utility still beats them.\n data-size={pixelSize === null ? named : undefined}\n className={cn(\n \"relative inline-flex items-center justify-center\",\n className,\n )}\n style={pixelSize === null ? undefined : { width: pixelSize, height: pixelSize }}\n >\n <svg\n // viewBox + 100% so the geometry follows the box instead of being\n // baked in: the ring now scales with whatever sizes the wrapper,\n // including a `className` override of the named scale.\n viewBox={`0 0 ${diameter} ${diameter}`}\n width=\"100%\"\n height=\"100%\"\n className={cn(indeterminate && \"animate-spin\")}\n >\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n className={cn(\"stroke-zinc-200 dark:stroke-zinc-700\", trackClassName)}\n />\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n className={cn(\n progressStroke[color],\n \"transition-[stroke-dashoffset] duration-300\",\n fillClassName,\n )}\n style={{ transform: \"rotate(-90deg)\", transformOrigin: \"center\" }}\n />\n </svg>\n {showValue && !indeterminate && (\n <span\n className={cn(\n \"absolute font-medium\",\n progressText[color],\n textSizeClasses[named],\n )}\n >\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n {...rest}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n data-react-fancy-progress=\"\"\n className={cn(\"relative w-full\", className)}\n >\n <div\n className={cn(\n \"w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-700\",\n barHeightClasses[named],\n trackClassName,\n )}\n >\n <div\n className={cn(\n \"h-full rounded-full transition-[width] duration-300\",\n progressFill[color],\n indeterminate && \"animate-pulse w-full\",\n fillClassName,\n )}\n style={indeterminate ? undefined : { width: `${percentage}%` }}\n />\n </div>\n {showValue && !indeterminate && (\n <span\n className={cn(\n \"mt-1 block text-right text-xs font-medium\",\n progressText[color],\n )}\n >\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n },\n);\n\nProgress.displayName = \"Progress\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Timeline/Timeline.context.ts","../src/components/Timeline/TimelineItem.tsx","../src/components/Timeline/TimelineBlock.tsx","../src/components/Timeline/Timeline.tsx"],"names":["forwardRef","jsx","jsxs","useRef"],"mappings":";;;;AAUO,IAAM,kBAAkB,aAAA,CAAoC;AAAA,EACjE,OAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAO,CAAA;AAAA,EACP,KAAA,EAAO,CAAA;AAAA,EACP,QAAA,EAAU;AACZ,CAAC,CAAA;AAEM,SAAS,WAAA,GAAc;AAC5B,EAAA,OAAO,WAAW,eAAe,CAAA;AACnC;ACbA,IAAM,eAAA,GAAyC;AAAA,EAC7C,KAAA,EAAO,gCAAA;AAAA,EAAkC,IAAA,EAAM,8BAAA;AAAA,EAC/C,IAAA,EAAM,8BAAA;AAAA,EAAgC,OAAA,EAAS,oCAAA;AAAA,EAC/C,KAAA,EAAO,gCAAA;AAAA,EACP,GAAA,EAAK,YAAA;AAAA,EAAc,MAAA,EAAQ,eAAA;AAAA,EAAiB,KAAA,EAAO,cAAA;AAAA,EACnD,MAAA,EAAQ,eAAA;AAAA,EAAiB,IAAA,EAAM,aAAA;AAAA,EAAe,KAAA,EAAO,cAAA;AAAA,EACrD,OAAA,EAAS,gBAAA;AAAA,EAAkB,IAAA,EAAM,aAAA;AAAA,EAAe,IAAA,EAAM,aAAA;AAAA,EACtD,GAAA,EAAK,YAAA;AAAA,EAAc,IAAA,EAAM,aAAA;AAAA,EAAe,MAAA,EAAQ,eAAA;AAAA,EAChD,MAAA,EAAQ,eAAA;AAAA,EAAiB,MAAA,EAAQ,eAAA;AAAA,EAAiB,OAAA,EAAS,gBAAA;AAAA,EAC3D,IAAA,EAAM,aAAA;AAAA,EAAe,IAAA,EAAM;AAC7B,CAAA;AAEA,IAAM,gBAAA,GAA0C;AAAA,EAC9C,KAAA,EAAO,mBAAA;AAAA,EAAqB,IAAA,EAAM,kBAAA;AAAA,EAClC,IAAA,EAAM,wCAAA;AAAA,EAA0C,OAAA,EAAS,qBAAA;AAAA,EACzD,KAAA,EAAO,mBAAA;AAAA,EACP,GAAA,EAAK,iBAAA;AAAA,EAAmB,MAAA,EAAQ,oBAAA;AAAA,EAAsB,KAAA,EAAO,mBAAA;AAAA,EAC7D,MAAA,EAAQ,oBAAA;AAAA,EAAsB,IAAA,EAAM,kBAAA;AAAA,EAAoB,KAAA,EAAO,mBAAA;AAAA,EAC/D,OAAA,EAAS,qBAAA;AAAA,EAAuB,IAAA,EAAM,kBAAA;AAAA,EAAoB,IAAA,EAAM,kBAAA;AAAA,EAChE,GAAA,EAAK,iBAAA;AAAA,EAAmB,IAAA,EAAM,kBAAA;AAAA,EAAoB,MAAA,EAAQ,oBAAA;AAAA,EAC1D,MAAA,EAAQ,oBAAA;AAAA,EAAsB,MAAA,EAAQ,oBAAA;AAAA,EAAsB,OAAA,EAAS,qBAAA;AAAA,EACrE,IAAA,EAAM,kBAAA;AAAA,EAAoB,IAAA,EAAM;AAClC,CAAA;AAEA,SAAS,IAAI,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,QAAO,EAAmE;AAC3G,EAAA,MAAM,IAAI,KAAA,IAAS,MAAA;AAEnB,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACE,GAAA,CAAC,UAAK,SAAA,EAAU,yIAAA,EACd,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM,CAAA,EACnC,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,2EAAA;AAAA,UACA,gBAAgB,CAAC,CAAA;AAAA,UACjB,MAAA,IAAU,QAAA;AAAA,UACV,MAAA,IAAU,iBAAiB,CAAC;AAAA,SAC9B;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,+BAAA;AAAA,QACA,gBAAgB,CAAC,CAAA;AAAA,QACjB,MAAA,IAAU,QAAA;AAAA,QACV,MAAA,IAAU,iBAAiB,CAAC;AAAA;AAC9B;AAAA,GACF;AAEJ;AAEA,SAAS,sBAAsB,QAAA,EAAmB;AAChD,EAAA,MAAM,GAAA,GAAM,OAAuB,IAAI,CAAA;AACvC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,QAAA,CAAS,CAAC,QAAQ,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,GAAA,CAAI,OAAA,EAAS;AAC/B,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,MAAM,WAAW,IAAI,oBAAA;AAAA,MACnB,CAAC,CAAC,KAAK,CAAA,KAAM;AAAE,QAAA,IAAI,MAAM,cAAA,EAAgB;AAAE,UAAA,UAAA,CAAW,IAAI,CAAA;AAAG,UAAA,QAAA,CAAS,UAAA,EAAW;AAAA,QAAG;AAAA,MAAE,CAAA;AAAA,MACtF,EAAE,WAAW,GAAA;AAAI,KACnB;AACA,IAAA,QAAA,CAAS,QAAQ,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,OAAO,EAAE,KAAK,OAAA,EAAQ;AACxB;AAEO,IAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,CAAC,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,GAAQ,MAAA,EAAQ,MAAA,GAAS,KAAA,EAAO,SAAA,EAAU,EAAG,IAAA,KAAS;AACpF,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,QAAA,KAAa,WAAA,EAAY;AACxD,IAAA,MAAM,EAAE,GAAA,EAAK,OAAA,EAAQ,GAAI,sBAAsB,QAAQ,CAAA;AACvD,IAAA,MAAM,MAAA,GAAS,UAAU,KAAA,GAAQ,CAAA;AACjC,IAAA,MAAM,UAAA,GAAa,CAAC,CAAC,IAAA,IAAQ,CAAC,CAAC,KAAA;AAC/B,IAAA,MAAM,MAAA,GAAS,QAAQ,CAAA,KAAM,CAAA;AAG7B,IAAA,IAAI,YAAY,YAAA,EAAc;AAC5B,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,gCAAA,EAA+B,EAAA;AAAA,UAC/B,SAAA,EAAW,EAAA;AAAA,YACT,4BAAA;AAAA,YACA,CAAC,MAAA,IAAU,UAAA;AAAA,YACX,QAAA,IAAY,kCAAA;AAAA,YACZ,QAAA,KAAa,UAAU,2BAAA,GAA8B,yBAAA,CAAA;AAAA,YACrD;AAAA,WACF;AAAA,UAGA,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EACZ,QAAA,EAAA;AAAA,cAAA,KAAA,GAAQ,CAAA,uBACJ,KAAA,EAAA,EAAI,SAAA,EAAU,4CAA2C,CAAA,mBAC1D,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,8BAC5B,GAAA,CAAC,GAAA,EAAA,EAAI,IAAA,EAAY,KAAA,EAAc,OAAc,MAAA,EAAgB,CAAA;AAAA,cAC5D,CAAC,MAAA,mBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAA2C,CAAA,mBAC1D,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS;AAAA,aAAA,EAC9B,CAAA;AAAA,4BAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EACZ,QAAA,EAAA;AAAA,cAAA,IAAA,oBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8EAAA,EAAgF,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,cAC7G;AAAA,aAAA,EACH;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ;AAGA,IAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,gCAAA,EAA+B,EAAA;AAAA,UAC/B,SAAA,EAAW,EAAA;AAAA,YACT,wEAAA;AAAA,YACA,QAAA,IAAY,kCAAA;AAAA,YACZ,QAAA,KAAa,UAAU,2BAAA,GAA8B,yBAAA,CAAA;AAAA,YACrD;AAAA,WACF;AAAA,UAGA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0GAAA,EACZ,QAAA,EAAA,CAAC,6BAAa,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,MAAY,KAAA,EAAc,KAAA,EAAc,MAAA,EAAgB,CAAA,EAAE,CAAA,mBAAS,GAAA,CAAC,OAAI,IAAA,EAAY,KAAA,EAAc,KAAA,EAAc,MAAA,EAAgB,CAAA,EAC9K,CAAA;AAAA,4BAGA,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA;AAAA,cACd,gBAAA;AAAA,cACA,CAAC,MAAA,IAAU,MAAA;AAAA,cACX,UAAA,IAAc,MAAA;AAAA,cACd,SAAS,6CAAA,GAAgD;AAAA,aAC3D,EACG,QAAA,EAAA;AAAA,cAAA,IAAA,oBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8EAAA,EAAgF,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,cAC7G;AAAA,aAAA,EACH;AAAA;AAAA;AAAA,OACF;AAAA,IAEJ;AAGA,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,gCAAA,EAA+B,EAAA;AAAA,QAC/B,SAAA,EAAW,EAAA;AAAA,UACT,uBAAA;AAAA,UACA,QAAA,IAAY,kCAAA;AAAA,UACZ,QAAA,KAAa,UAAU,2BAAA,GAA8B,yBAAA,CAAA;AAAA,UACrD;AAAA,SACF;AAAA,QAGA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gDAAA,EACZ,QAAA,EAAA,CAAC,6BACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,MAAY,KAAA,EAAc,KAAA,EAAc,MAAA,EAAgB,CAAA,EAAE,CAAA,mBACvF,GAAA,CAAC,OAAI,IAAA,EAAY,KAAA,EAAc,KAAA,EAAc,MAAA,EAAgB,CAAA,EACnE,CAAA;AAAA,0BAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gBAAA,EAAkB,CAAC,MAAA,IAAU,MAAA,EAAQ,UAAA,IAAc,MAAM,CAAA,EACzE,QAAA,EAAA;AAAA,YAAA,IAAA,oBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8EAAA,EAAgF,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,YAC7G;AAAA,WAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;ACxLpB,IAAM,aAAA,GAAgBA,UAAAA;AAAA,EAC3B,CAAC,EAAE,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,KAAA,GAAQ,MAAA,EAAQ,MAAA,GAAS,KAAA,EAAO,SAAA,EAAU,EAAG,GAAA,KAAQ;AACtF,IAAA,uBACEC,GAAAA,CAAC,YAAA,EAAA,EAAa,MAAY,KAAA,EAAc,KAAA,EAAc,QACpD,QAAA,kBAAAC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,iCAAA,EAAgC,EAAA;AAAA,QAChC,SAAA,EAAW,EAAA;AAAA,UACT,sFAAA;AAAA,UACA,MAAA,IAAU,+CAAA;AAAA,UACV;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAA,oBACCD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DACZ,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,0BAEFA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAA4C,QAAA,EAAS;AAAA;AAAA;AAAA,KACtE,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;ACvB5B,IAAM,YAAA,GAAeD,UAAAA;AAAA,EACnB,CAAC;AAAA,IACC,QAAA;AAAA,IACA,OAAA,EAAS,WAAA;AAAA,IACT,WAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX;AAAA,KACC,GAAA,KAAQ;AACT,IAAA,MAAM,SAAA,GAAYG,OAAuB,IAAI,CAAA;AAG7C,IAAA,IAAI,UAA2B,WAAA,IAAe,SAAA;AAC9C,IAAA,IAAI,CAAC,eAAe,WAAA,EAAa;AAC/B,MAAA,OAAA,GAAU,WAAA,KAAgB,eAAe,YAAA,GAAe,SAAA;AAAA,IAC1D;AAEA,IAAA,MAAM,eAAe,OAAA,KAAY,YAAA;AACjC,IAAA,MAAM,gBAAgB,OAAA,KAAY,aAAA;AAGlC,IAAA,MAAM,KAAA,GAAQ,SACV,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACbD,IAAAA,CAAC,YAAA,EAAA,EAAqB,MAAM,CAAA,CAAE,IAAA,EAAM,OAAO,CAAA,CAAE,KAAA,EAAO,MAAM,CAAA,CAAE,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,KAAA,EACxE,QAAA,EAAA;AAAA,MAAA,CAAA,CAAE,yBAASD,GAAAA,CAAC,QAAG,SAAA,EAAU,6CAAA,EAA+C,YAAE,KAAA,EAAM,CAAA;AAAA,MAChF,CAAA,CAAE,+BAAeA,GAAAA,CAAC,SAAI,SAAA,EAAU,+DAAA,EAAiE,YAAE,WAAA,EAAY;AAAA,KAAA,EAAA,EAF/F,CAGnB,CACD,CAAA,GACD,QAAA,CAAS,QAAQ,QAAQ,CAAA;AAE7B,IAAA,MAAM,WAAA,GAAc,WAAA,CAAY,CAAC,CAAA,KAAkB;AACjD,MAAA,IAAI,CAAC,UAAU,OAAA,EAAS;AACxB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,SAAA,CAAU,OAAA,CAAQ,cAAc,CAAA,CAAE,MAAA;AAAA,IACpC,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,OAAA,GAAU,MAAM,GAAA,CAAI,CAAC,OAAO,CAAA,qBAChCA,GAAAA,CAAC,eAAA,CAAgB,QAAA,EAAhB,EAAiC,OAAO,EAAE,OAAA,EAAS,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,KAAA,CAAM,QAAQ,QAAA,EAAS,EACzF,QAAA,EAAA,KAAA,EAAA,EAD4B,CAE/B,CACD,CAAA;AAED,IAAA,uBACEC,KAAC,KAAA,EAAA,EAAI,GAAA,EAAU,6BAA0B,EAAA,EAAG,cAAA,EAAc,SAAS,SAAA,EAC/D,QAAA,EAAA;AAAA,MAAA,CAAA,OAAA,IAAW,WAAA,qBACXA,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,MAAA,EACZ,QAAA,EAAA;AAAA,QAAA,OAAA,oBAAWD,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uDAAuD,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QACxF,+BAAeA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iDAAiD,QAAA,EAAA,WAAA,EAAY;AAAA,OAAA,EAC5F,CAAA;AAAA,MAGD,+BACCA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,SAAA;AAAA,UACL,SAAA,EAAU,4BAAA;AAAA,UACV,KAAA,EAAO,EAAE,cAAA,EAAgB,MAAA,EAAQ,gBAAgB,8BAAA,EAA+B;AAAA,UAChF,OAAA,EAAS,WAAA;AAAA,UAET,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EAAA,OAAA,EACH;AAAA;AAAA,OACF;AAAA;AAAA,wBAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,CAAM,MAAA,GAAS,CAAA,oBACdD,GAAAA,CAAC,SAAI,SAAA,EAAW,EAAA;AAAA,YACd,2DAAA;AAAA,YACA,gBACI,uCAAA,GACA;AAAA,WACN,EAAG,CAAA;AAAA,UAEJ;AAAA,SAAA,EACH;AAAA;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,YAAA,CAAa,WAAA,GAAc,UAAA;AAEpB,IAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA,EAClD,IAAA,EAAM,YAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAC","file":"chunk-AT5OG5N4.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { TimelineVariant } from \"./Timeline.types\";\n\ninterface TimelineContextValue {\n variant: TimelineVariant;\n index: number;\n total: number;\n animated: boolean;\n}\n\nexport const TimelineContext = createContext<TimelineContextValue>({\n variant: \"stacked\",\n index: 0,\n total: 0,\n animated: true,\n});\n\nexport function useTimeline() {\n return useContext(TimelineContext);\n}\n","import { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useTimeline } from \"./Timeline.context\";\nimport type { TimelineItemProps } from \"./Timeline.types\";\nimport type { Color } from \"../../utils/types\";\n\nconst dotColorClasses: Record<Color, string> = {\n slate: \"bg-slate-400 dark:bg-slate-600\", gray: \"bg-gray-400 dark:bg-gray-600\",\n zinc: \"bg-zinc-300 dark:bg-zinc-600\", neutral: \"bg-neutral-400 dark:bg-neutral-600\",\n stone: \"bg-stone-400 dark:bg-stone-600\",\n red: \"bg-red-500\", orange: \"bg-orange-500\", amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\", lime: \"bg-lime-500\", green: \"bg-green-500\",\n emerald: \"bg-emerald-500\", teal: \"bg-teal-500\", cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\", blue: \"bg-blue-500\", indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\", purple: \"bg-purple-500\", fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\", rose: \"bg-rose-500\",\n};\n\nconst ringColorClasses: Record<Color, string> = {\n slate: \"ring-slate-400/30\", gray: \"ring-gray-400/30\",\n zinc: \"ring-zinc-400/30 dark:ring-zinc-500/30\", neutral: \"ring-neutral-400/30\",\n stone: \"ring-stone-400/30\",\n red: \"ring-red-500/30\", orange: \"ring-orange-500/30\", amber: \"ring-amber-500/30\",\n yellow: \"ring-yellow-500/30\", lime: \"ring-lime-500/30\", green: \"ring-green-500/30\",\n emerald: \"ring-emerald-500/30\", teal: \"ring-teal-500/30\", cyan: \"ring-cyan-500/30\",\n sky: \"ring-sky-500/30\", blue: \"ring-blue-500/30\", indigo: \"ring-indigo-500/30\",\n violet: \"ring-violet-500/30\", purple: \"ring-purple-500/30\", fuchsia: \"ring-fuchsia-500/30\",\n pink: \"ring-pink-500/30\", rose: \"ring-rose-500/30\",\n};\n\nfunction Dot({ icon, emoji, color, active }: Pick<TimelineItemProps, \"icon\" | \"emoji\" | \"color\" | \"active\">) {\n const c = color ?? \"zinc\";\n\n if (emoji) {\n return (\n <span className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-zinc-200 bg-zinc-100 dark:border-zinc-700 dark:bg-zinc-800\">\n <span className=\"text-sm\">{emoji}</span>\n </span>\n );\n }\n\n if (icon) {\n return (\n <span\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-white\",\n dotColorClasses[c],\n active && \"ring-4\",\n active && ringColorClasses[c],\n )}\n >\n {icon}\n </span>\n );\n }\n\n return (\n <span\n className={cn(\n \"h-3 w-3 shrink-0 rounded-full\",\n dotColorClasses[c],\n active && \"ring-4\",\n active && ringColorClasses[c],\n )}\n />\n );\n}\n\nfunction useIntersectionReveal(animated: boolean) {\n const ref = useRef<HTMLDivElement>(null);\n const [visible, setVisible] = useState(!animated);\n\n useEffect(() => {\n if (!animated || !ref.current) return;\n const el = ref.current;\n const observer = new IntersectionObserver(\n ([entry]) => { if (entry.isIntersecting) { setVisible(true); observer.disconnect(); } },\n { threshold: 0.2 },\n );\n observer.observe(el);\n return () => observer.disconnect();\n }, [animated]);\n\n return { ref, visible };\n}\n\nexport const TimelineItem = forwardRef<HTMLDivElement, TimelineItemProps>(\n ({ children, icon, emoji, date, color = \"zinc\", active = false, className }, _ref) => {\n const { variant, index, total, animated } = useTimeline();\n const { ref, visible } = useIntersectionReveal(animated);\n const isLast = index === total - 1;\n const isLargeDot = !!icon || !!emoji;\n const isEven = index % 2 === 0;\n\n // ── Horizontal ────────────────────────────────────────\n if (variant === \"horizontal\") {\n return (\n <div\n ref={ref}\n data-react-fancy-timeline-item=\"\"\n className={cn(\n \"flex flex-col items-center\",\n !isLast && \"min-w-40\",\n animated && \"transition duration-500 ease-out\",\n animated && (visible ? \"translate-y-0 opacity-100\" : \"translate-y-4 opacity-0\"),\n className,\n )}\n >\n {/* Dot + horizontal line (fixed height for alignment) */}\n <div className=\"flex h-8 w-full items-center\">\n {index > 0\n ? <div className=\"h-px flex-1 bg-zinc-200 dark:bg-zinc-700\" />\n : <div className=\"flex-1\" />}\n <Dot icon={icon} emoji={emoji} color={color} active={active} />\n {!isLast\n ? <div className=\"h-px flex-1 bg-zinc-200 dark:bg-zinc-700\" />\n : <div className=\"flex-1\" />}\n </div>\n\n {/* Content below */}\n <div className=\"mt-3 max-w-40 px-2 text-center\">\n {date && <time className=\"text-xs font-medium uppercase tracking-wide text-zinc-500 dark:text-zinc-400\">{date}</time>}\n {children}\n </div>\n </div>\n );\n }\n\n // ── Alternating ───────────────────────────────────────\n if (variant === \"alternating\") {\n return (\n <div\n ref={ref}\n data-react-fancy-timeline-item=\"\"\n className={cn(\n \"relative flex gap-x-4 md:grid md:grid-cols-[1fr_1.5rem_1fr] md:gap-x-6\",\n animated && \"transition duration-500 ease-out\",\n animated && (visible ? \"translate-y-0 opacity-100\" : \"translate-y-4 opacity-0\"),\n className,\n )}\n >\n {/* Dot (sits on top of the background line) */}\n <div className=\"relative z-10 flex w-8 shrink-0 justify-center md:col-start-2 md:row-start-1 md:w-auto md:justify-center\">\n {!isLargeDot ? <div className=\"mt-1.5\"><Dot icon={icon} emoji={emoji} color={color} active={active} /></div> : <Dot icon={icon} emoji={emoji} color={color} active={active} />}\n </div>\n\n {/* Content */}\n <div className={cn(\n \"min-w-0 flex-1\",\n !isLast && \"pb-8\",\n isLargeDot && \"pt-1\",\n isEven ? \"md:col-start-1 md:row-start-1 md:text-right\" : \"md:col-start-3\",\n )}>\n {date && <time className=\"text-xs font-medium uppercase tracking-wide text-zinc-500 dark:text-zinc-400\">{date}</time>}\n {children}\n </div>\n </div>\n );\n }\n\n // ── Stacked (default) ─────────────────────────────────\n return (\n <div\n ref={ref}\n data-react-fancy-timeline-item=\"\"\n className={cn(\n \"relative flex gap-x-4\",\n animated && \"transition duration-500 ease-out\",\n animated && (visible ? \"translate-y-0 opacity-100\" : \"translate-y-4 opacity-0\"),\n className,\n )}\n >\n {/* Dot (sits on top of the background line) */}\n <div className=\"relative z-10 flex w-8 shrink-0 justify-center\">\n {!isLargeDot\n ? <div className=\"mt-1.5\"><Dot icon={icon} emoji={emoji} color={color} active={active} /></div>\n : <Dot icon={icon} emoji={emoji} color={color} active={active} />}\n </div>\n\n {/* Content */}\n <div className={cn(\"min-w-0 flex-1\", !isLast && \"pb-8\", isLargeDot && \"pt-1\")}>\n {date && <time className=\"text-xs font-medium uppercase tracking-wide text-zinc-500 dark:text-zinc-400\">{date}</time>}\n {children}\n </div>\n </div>\n );\n },\n);\n\nTimelineItem.displayName = \"TimelineItem\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { TimelineItem } from \"./TimelineItem\";\nimport type { TimelineBlockProps } from \"./Timeline.types\";\n\nexport const TimelineBlock = forwardRef<HTMLDivElement, TimelineBlockProps>(\n ({ heading, children, icon, emoji, color = \"zinc\", active = false, className }, ref) => {\n return (\n <TimelineItem icon={icon} emoji={emoji} color={color} active={active}>\n <div\n ref={ref}\n data-react-fancy-timeline-block=\"\"\n className={cn(\n \"rounded-lg border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900\",\n active && \"ring-2 ring-blue-500/20 dark:ring-blue-400/20\",\n className,\n )}\n >\n {heading && (\n <div className=\"mb-2 text-sm font-semibold text-zinc-900 dark:text-zinc-100\">\n {heading}\n </div>\n )}\n <div className=\"text-sm text-zinc-600 dark:text-zinc-400\">{children}</div>\n </div>\n </TimelineItem>\n );\n },\n);\n\nTimelineBlock.displayName = \"TimelineBlock\";\n","import { Children, forwardRef, useCallback, useRef, type WheelEvent } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { TimelineContext } from \"./Timeline.context\";\nimport { TimelineItem } from \"./TimelineItem\";\nimport { TimelineBlock } from \"./TimelineBlock\";\nimport type { TimelineProps, TimelineVariant } from \"./Timeline.types\";\n\nconst TimelineRoot = forwardRef<HTMLDivElement, TimelineProps>(\n ({\n children,\n variant: variantProp,\n orientation,\n events,\n heading,\n description,\n animated = true,\n className,\n }, ref) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n\n // Backward compat: map deprecated orientation to variant\n let variant: TimelineVariant = variantProp ?? \"stacked\";\n if (!variantProp && orientation) {\n variant = orientation === \"horizontal\" ? \"horizontal\" : \"stacked\";\n }\n\n const isHorizontal = variant === \"horizontal\";\n const isAlternating = variant === \"alternating\";\n\n // Build items from events prop (data-driven) or children (compound)\n const items = events\n ? events.map((e, i) => (\n <TimelineItem key={i} date={e.date} emoji={e.emoji} icon={e.icon} color={e.color}>\n {e.title && <h3 className=\"font-semibold text-zinc-900 dark:text-white\">{e.title}</h3>}\n {e.description && <div className=\"mt-1 text-sm leading-relaxed text-zinc-600 dark:text-zinc-400\">{e.description}</div>}\n </TimelineItem>\n ))\n : Children.toArray(children);\n\n const handleWheel = useCallback((e: WheelEvent) => {\n if (!scrollRef.current) return;\n e.preventDefault();\n scrollRef.current.scrollLeft += e.deltaY;\n }, []);\n\n const content = items.map((child, i) => (\n <TimelineContext.Provider key={i} value={{ variant, index: i, total: items.length, animated }}>\n {child}\n </TimelineContext.Provider>\n ));\n\n return (\n <div ref={ref} data-react-fancy-timeline=\"\" data-variant={variant} className={className}>\n {(heading || description) && (\n <div className=\"mb-8\">\n {heading && <h2 className=\"text-xl font-semibold text-zinc-900 dark:text-white\">{heading}</h2>}\n {description && <p className=\"mt-1 text-sm text-zinc-500 dark:text-zinc-400\">{description}</p>}\n </div>\n )}\n\n {isHorizontal ? (\n <div\n ref={scrollRef}\n className=\"overflow-x-auto pb-4 -mb-4\"\n style={{ scrollbarWidth: \"thin\", scrollbarColor: \"rgb(161 161 170) transparent\" }}\n onWheel={handleWheel}\n >\n <div className=\"flex min-w-max items-start\">\n {content}\n </div>\n </div>\n ) : (\n /* Vertical variants: continuous background line behind all events */\n <div className=\"relative\">\n {items.length > 1 && (\n <div className={cn(\n \"absolute top-0 bottom-0 w-px bg-zinc-200 dark:bg-zinc-700\",\n isAlternating\n ? \"left-4 md:left-1/2 md:-translate-x-px\"\n : \"left-4\",\n )} />\n )}\n {content}\n </div>\n )}\n </div>\n );\n },\n);\n\nTimelineRoot.displayName = \"Timeline\";\n\nexport const Timeline = Object.assign(TimelineRoot, {\n Item: TimelineItem,\n Block: TimelineBlock,\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Callout/Callout.colors.ts","../src/components/Callout/Callout.tsx"],"names":["forwardRef","jsxs","cn","jsx","X"],"mappings":"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","file":"chunk-EJHAIXAE.cjs","sourcesContent":["// AUTO-GENERATED by scripts/gen-callout-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const calloutContainer: Record<Color, string> = {\n slate: \"border-slate-500 bg-slate-50 text-slate-900 dark:border-slate-400 dark:bg-slate-950/50 dark:text-slate-100\",\n gray: \"border-gray-500 bg-gray-50 text-gray-900 dark:border-gray-400 dark:bg-gray-950/50 dark:text-gray-100\",\n zinc: \"border-zinc-500 bg-zinc-50 text-zinc-900 dark:border-zinc-400 dark:bg-zinc-950/50 dark:text-zinc-100\",\n neutral: \"border-neutral-500 bg-neutral-50 text-neutral-900 dark:border-neutral-400 dark:bg-neutral-950/50 dark:text-neutral-100\",\n stone: \"border-stone-500 bg-stone-50 text-stone-900 dark:border-stone-400 dark:bg-stone-950/50 dark:text-stone-100\",\n red: \"border-red-500 bg-red-50 text-red-900 dark:border-red-400 dark:bg-red-950/50 dark:text-red-100\",\n orange: \"border-orange-500 bg-orange-50 text-orange-900 dark:border-orange-400 dark:bg-orange-950/50 dark:text-orange-100\",\n amber: \"border-amber-500 bg-amber-50 text-amber-900 dark:border-amber-400 dark:bg-amber-950/50 dark:text-amber-100\",\n yellow: \"border-yellow-500 bg-yellow-50 text-yellow-900 dark:border-yellow-400 dark:bg-yellow-950/50 dark:text-yellow-100\",\n lime: \"border-lime-500 bg-lime-50 text-lime-900 dark:border-lime-400 dark:bg-lime-950/50 dark:text-lime-100\",\n green: \"border-green-500 bg-green-50 text-green-900 dark:border-green-400 dark:bg-green-950/50 dark:text-green-100\",\n emerald: \"border-emerald-500 bg-emerald-50 text-emerald-900 dark:border-emerald-400 dark:bg-emerald-950/50 dark:text-emerald-100\",\n teal: \"border-teal-500 bg-teal-50 text-teal-900 dark:border-teal-400 dark:bg-teal-950/50 dark:text-teal-100\",\n cyan: \"border-cyan-500 bg-cyan-50 text-cyan-900 dark:border-cyan-400 dark:bg-cyan-950/50 dark:text-cyan-100\",\n sky: \"border-sky-500 bg-sky-50 text-sky-900 dark:border-sky-400 dark:bg-sky-950/50 dark:text-sky-100\",\n blue: \"border-blue-500 bg-blue-50 text-blue-900 dark:border-blue-400 dark:bg-blue-950/50 dark:text-blue-100\",\n indigo: \"border-indigo-500 bg-indigo-50 text-indigo-900 dark:border-indigo-400 dark:bg-indigo-950/50 dark:text-indigo-100\",\n violet: \"border-violet-500 bg-violet-50 text-violet-900 dark:border-violet-400 dark:bg-violet-950/50 dark:text-violet-100\",\n purple: \"border-purple-500 bg-purple-50 text-purple-900 dark:border-purple-400 dark:bg-purple-950/50 dark:text-purple-100\",\n fuchsia: \"border-fuchsia-500 bg-fuchsia-50 text-fuchsia-900 dark:border-fuchsia-400 dark:bg-fuchsia-950/50 dark:text-fuchsia-100\",\n pink: \"border-pink-500 bg-pink-50 text-pink-900 dark:border-pink-400 dark:bg-pink-950/50 dark:text-pink-100\",\n rose: \"border-rose-500 bg-rose-50 text-rose-900 dark:border-rose-400 dark:bg-rose-950/50 dark:text-rose-100\",\n};\n\nexport const calloutIcon: Record<Color, string> = {\n slate: \"text-slate-500 dark:text-slate-400\",\n gray: \"text-gray-500 dark:text-gray-400\",\n zinc: \"text-zinc-500 dark:text-zinc-400\",\n neutral: \"text-neutral-500 dark:text-neutral-400\",\n stone: \"text-stone-500 dark:text-stone-400\",\n red: \"text-red-500 dark:text-red-400\",\n orange: \"text-orange-500 dark:text-orange-400\",\n amber: \"text-amber-500 dark:text-amber-400\",\n yellow: \"text-yellow-500 dark:text-yellow-400\",\n lime: \"text-lime-500 dark:text-lime-400\",\n green: \"text-green-500 dark:text-green-400\",\n emerald: \"text-emerald-500 dark:text-emerald-400\",\n teal: \"text-teal-500 dark:text-teal-400\",\n cyan: \"text-cyan-500 dark:text-cyan-400\",\n sky: \"text-sky-500 dark:text-sky-400\",\n blue: \"text-blue-500 dark:text-blue-400\",\n indigo: \"text-indigo-500 dark:text-indigo-400\",\n violet: \"text-violet-500 dark:text-violet-400\",\n purple: \"text-purple-500 dark:text-purple-400\",\n fuchsia: \"text-fuchsia-500 dark:text-fuchsia-400\",\n pink: \"text-pink-500 dark:text-pink-400\",\n rose: \"text-rose-500 dark:text-rose-400\",\n};\n","import { forwardRef } from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalloutProps } from \"./Callout.types\";\nimport { calloutContainer, calloutIcon } from \"./Callout.colors\";\n\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n children,\n color = \"blue\",\n icon,\n dismissible = false,\n onDismiss,\n className,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n role=\"alert\"\n data-react-fancy-callout=\"\"\n className={cn(\n \"flex items-start gap-3 rounded-lg border-l-4 p-4\",\n calloutContainer[color],\n className,\n )}\n {...props}\n >\n {icon && (\n <span className={cn(\"mt-0.5 shrink-0\", calloutIcon[color])}>\n {icon}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">{children}</div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className={cn(\n \"shrink-0 rounded p-0.5 opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-current\",\n )}\n aria-label=\"Dismiss\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n },\n);\n\nCallout.displayName = \"Callout\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Badge/Badge.colors.ts","../src/components/Badge/Badge.tsx"],"names":[],"mappings":"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","file":"chunk-EWRP6KCY.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-badge-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const badgeSolid: Record<Color, string> = {\n slate: \"bg-slate-600 text-white dark:bg-slate-500\",\n gray: \"bg-gray-600 text-white dark:bg-gray-500\",\n zinc: \"bg-zinc-600 text-white dark:bg-zinc-500\",\n neutral: \"bg-neutral-600 text-white dark:bg-neutral-500\",\n stone: \"bg-stone-600 text-white dark:bg-stone-500\",\n red: \"bg-red-600 text-white dark:bg-red-500\",\n orange: \"bg-orange-600 text-white dark:bg-orange-500\",\n amber: \"bg-amber-400 text-amber-950 dark:bg-amber-300 dark:text-amber-950\",\n yellow: \"bg-yellow-400 text-yellow-950 dark:bg-yellow-300 dark:text-yellow-950\",\n lime: \"bg-lime-400 text-lime-950 dark:bg-lime-300 dark:text-lime-950\",\n green: \"bg-green-600 text-white dark:bg-green-500\",\n emerald: \"bg-emerald-600 text-white dark:bg-emerald-500\",\n teal: \"bg-teal-600 text-white dark:bg-teal-500\",\n cyan: \"bg-cyan-600 text-white dark:bg-cyan-500\",\n sky: \"bg-sky-600 text-white dark:bg-sky-500\",\n blue: \"bg-blue-600 text-white dark:bg-blue-500\",\n indigo: \"bg-indigo-600 text-white dark:bg-indigo-500\",\n violet: \"bg-violet-600 text-white dark:bg-violet-500\",\n purple: \"bg-purple-600 text-white dark:bg-purple-500\",\n fuchsia: \"bg-fuchsia-600 text-white dark:bg-fuchsia-500\",\n pink: \"bg-pink-600 text-white dark:bg-pink-500\",\n rose: \"bg-rose-600 text-white dark:bg-rose-500\",\n};\n\nexport const badgeOutline: Record<Color, string> = {\n slate: \"border border-slate-300 text-slate-700 dark:border-slate-600 dark:text-slate-300\",\n gray: \"border border-gray-300 text-gray-700 dark:border-gray-600 dark:text-gray-300\",\n zinc: \"border border-zinc-300 text-zinc-700 dark:border-zinc-600 dark:text-zinc-300\",\n neutral: \"border border-neutral-300 text-neutral-700 dark:border-neutral-600 dark:text-neutral-300\",\n stone: \"border border-stone-300 text-stone-700 dark:border-stone-600 dark:text-stone-300\",\n red: \"border border-red-300 text-red-700 dark:border-red-600 dark:text-red-300\",\n orange: \"border border-orange-300 text-orange-700 dark:border-orange-600 dark:text-orange-300\",\n amber: \"border border-amber-300 text-amber-700 dark:border-amber-600 dark:text-amber-300\",\n yellow: \"border border-yellow-300 text-yellow-700 dark:border-yellow-600 dark:text-yellow-300\",\n lime: \"border border-lime-300 text-lime-700 dark:border-lime-600 dark:text-lime-300\",\n green: \"border border-green-300 text-green-700 dark:border-green-600 dark:text-green-300\",\n emerald: \"border border-emerald-300 text-emerald-700 dark:border-emerald-600 dark:text-emerald-300\",\n teal: \"border border-teal-300 text-teal-700 dark:border-teal-600 dark:text-teal-300\",\n cyan: \"border border-cyan-300 text-cyan-700 dark:border-cyan-600 dark:text-cyan-300\",\n sky: \"border border-sky-300 text-sky-700 dark:border-sky-600 dark:text-sky-300\",\n blue: \"border border-blue-300 text-blue-700 dark:border-blue-600 dark:text-blue-300\",\n indigo: \"border border-indigo-300 text-indigo-700 dark:border-indigo-600 dark:text-indigo-300\",\n violet: \"border border-violet-300 text-violet-700 dark:border-violet-600 dark:text-violet-300\",\n purple: \"border border-purple-300 text-purple-700 dark:border-purple-600 dark:text-purple-300\",\n fuchsia: \"border border-fuchsia-300 text-fuchsia-700 dark:border-fuchsia-600 dark:text-fuchsia-300\",\n pink: \"border border-pink-300 text-pink-700 dark:border-pink-600 dark:text-pink-300\",\n rose: \"border border-rose-300 text-rose-700 dark:border-rose-600 dark:text-rose-300\",\n};\n\nexport const badgeSoft: Record<Color, string> = {\n slate: \"bg-slate-100 text-slate-700 dark:bg-slate-900/30 dark:text-slate-300\",\n gray: \"bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-300\",\n zinc: \"bg-zinc-100 text-zinc-700 dark:bg-zinc-900/30 dark:text-zinc-300\",\n neutral: \"bg-neutral-100 text-neutral-700 dark:bg-neutral-900/30 dark:text-neutral-300\",\n stone: \"bg-stone-100 text-stone-700 dark:bg-stone-900/30 dark:text-stone-300\",\n red: \"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300\",\n orange: \"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-300\",\n amber: \"bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300\",\n yellow: \"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-300\",\n lime: \"bg-lime-100 text-lime-700 dark:bg-lime-900/30 dark:text-lime-300\",\n green: \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-300\",\n emerald: \"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300\",\n teal: \"bg-teal-100 text-teal-700 dark:bg-teal-900/30 dark:text-teal-300\",\n cyan: \"bg-cyan-100 text-cyan-700 dark:bg-cyan-900/30 dark:text-cyan-300\",\n sky: \"bg-sky-100 text-sky-700 dark:bg-sky-900/30 dark:text-sky-300\",\n blue: \"bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300\",\n indigo: \"bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-300\",\n violet: \"bg-violet-100 text-violet-700 dark:bg-violet-900/30 dark:text-violet-300\",\n purple: \"bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-300\",\n fuchsia: \"bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/30 dark:text-fuchsia-300\",\n pink: \"bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-300\",\n rose: \"bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-300\",\n};\n\nexport const badgeDot: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { BadgeProps } from \"./Badge.types\";\nimport { badgeSolid, badgeOutline, badgeSoft, badgeDot } from \"./Badge.colors\";\n\ntype BadgeVariant = NonNullable<BadgeProps[\"variant\"]>;\ntype BadgeSize = NonNullable<BadgeProps[\"size\"]>;\n\n// Full Tailwind v4 palette — see Badge.colors.ts (generated literal class maps).\nconst variantMap: Record<BadgeVariant, typeof badgeSoft> = {\n solid: badgeSolid,\n outline: badgeOutline,\n soft: badgeSoft,\n};\n\nconst sizeClasses: Record<BadgeSize, string> = {\n sm: \"text-xs px-1.5 py-0.5\",\n md: \"text-sm px-2 py-0.5\",\n lg: \"text-base px-2.5 py-1\",\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n color = \"zinc\",\n variant = \"soft\",\n size = \"md\",\n dot = false,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <span\n ref={ref}\n data-react-fancy-badge=\"\"\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full font-medium\",\n sizeClasses[size],\n variantMap[variant][color],\n className,\n )}\n {...props}\n >\n {dot && (\n <span\n className={cn(\n \"inline-block h-1.5 w-1.5 rounded-full\",\n badgeDot[color],\n )}\n />\n )}\n {children}\n </span>\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n"]}