@particle-academy/react-fancy 5.50.0 → 5.51.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.
- package/CHANGELOG.md +53 -0
- package/dist/chart.cjs +2 -2
- package/dist/chart.d.cts +9 -1
- package/dist/chart.d.ts +9 -1
- package/dist/chart.js +1 -1
- package/dist/{chunk-T5OCRKPD.cjs → chunk-23PAOCQQ.cjs} +4 -4
- package/dist/{chunk-T5OCRKPD.cjs.map → chunk-23PAOCQQ.cjs.map} +1 -1
- package/dist/{chunk-GBGJWAXZ.cjs → chunk-25UPDBI6.cjs} +4 -4
- package/dist/{chunk-GBGJWAXZ.cjs.map → chunk-25UPDBI6.cjs.map} +1 -1
- package/dist/chunk-3K2CEAI7.js +78 -0
- package/dist/chunk-3K2CEAI7.js.map +1 -0
- package/dist/{chunk-L637KPEA.js → chunk-4NBM3LXN.js} +3 -3
- package/dist/{chunk-L637KPEA.js.map → chunk-4NBM3LXN.js.map} +1 -1
- package/dist/{chunk-2QIGXSSZ.cjs → chunk-7ZDJPHLJ.cjs} +6 -6
- package/dist/{chunk-2QIGXSSZ.cjs.map → chunk-7ZDJPHLJ.cjs.map} +1 -1
- package/dist/{chunk-VWBKFQQN.cjs → chunk-ATANWEXA.cjs} +8 -8
- package/dist/{chunk-VWBKFQQN.cjs.map → chunk-ATANWEXA.cjs.map} +1 -1
- package/dist/{chunk-7B3HK6TY.cjs → chunk-B6CQ4KK7.cjs} +6 -4
- package/dist/chunk-B6CQ4KK7.cjs.map +1 -0
- package/dist/{chunk-YQJWD53X.js → chunk-ENYHLZ2X.js} +3 -3
- package/dist/{chunk-YQJWD53X.js.map → chunk-ENYHLZ2X.js.map} +1 -1
- package/dist/chunk-FQZE5N2N.cjs +80 -0
- package/dist/chunk-FQZE5N2N.cjs.map +1 -0
- package/dist/{chunk-PV5WDIGM.cjs → chunk-FVG3YXXM.cjs} +4 -4
- package/dist/{chunk-PV5WDIGM.cjs.map → chunk-FVG3YXXM.cjs.map} +1 -1
- package/dist/{chunk-KYZNCVRD.js → chunk-FYKOLKQZ.js} +43 -26
- package/dist/chunk-FYKOLKQZ.js.map +1 -0
- package/dist/{chunk-FU6R6BZ4.js → chunk-GAB2QXHH.js} +102 -40
- package/dist/chunk-GAB2QXHH.js.map +1 -0
- package/dist/{chunk-Z43BI7CQ.cjs → chunk-GU5BYZTR.cjs} +4 -4
- package/dist/{chunk-Z43BI7CQ.cjs.map → chunk-GU5BYZTR.cjs.map} +1 -1
- package/dist/{chunk-TXCAIL5X.cjs → chunk-HKRB2Z6R.cjs} +4 -4
- package/dist/{chunk-TXCAIL5X.cjs.map → chunk-HKRB2Z6R.cjs.map} +1 -1
- package/dist/{chunk-7MJ7VEKE.js → chunk-IAUJKZAQ.js} +3 -3
- package/dist/{chunk-7MJ7VEKE.js.map → chunk-IAUJKZAQ.js.map} +1 -1
- package/dist/{chunk-CK6LRROH.js → chunk-M5ACSJJ4.js} +6 -4
- package/dist/chunk-M5ACSJJ4.js.map +1 -0
- package/dist/{chunk-XBC3M4BL.js → chunk-MGE5KOVA.js} +3 -3
- package/dist/{chunk-XBC3M4BL.js.map → chunk-MGE5KOVA.js.map} +1 -1
- package/dist/{chunk-IPBEVSSC.cjs → chunk-MH4QS7OE.cjs} +6 -6
- package/dist/{chunk-IPBEVSSC.cjs.map → chunk-MH4QS7OE.cjs.map} +1 -1
- package/dist/{chunk-P7F32HIH.js → chunk-N6OZZAOT.js} +3 -3
- package/dist/{chunk-P7F32HIH.js.map → chunk-N6OZZAOT.js.map} +1 -1
- package/dist/{chunk-VFIVF5YO.js → chunk-PHDIQ4VC.js} +3 -3
- package/dist/{chunk-VFIVF5YO.js.map → chunk-PHDIQ4VC.js.map} +1 -1
- package/dist/{chunk-MSRYJETY.cjs → chunk-R3UG6PVX.cjs} +42 -25
- package/dist/chunk-R3UG6PVX.cjs.map +1 -0
- package/dist/{chunk-NAQJF3G6.cjs → chunk-SAPOYAGN.cjs} +101 -39
- package/dist/chunk-SAPOYAGN.cjs.map +1 -0
- package/dist/{chunk-BR27AXFE.cjs → chunk-SYVOGYJG.cjs} +9 -9
- package/dist/{chunk-BR27AXFE.cjs.map → chunk-SYVOGYJG.cjs.map} +1 -1
- package/dist/{chunk-NYDR2VSA.js → chunk-TNYWQ6EQ.js} +3 -3
- package/dist/{chunk-NYDR2VSA.js.map → chunk-TNYWQ6EQ.js.map} +1 -1
- package/dist/{chunk-SWBF2BXA.js → chunk-TT3K5D6J.js} +3 -3
- package/dist/{chunk-SWBF2BXA.js.map → chunk-TT3K5D6J.js.map} +1 -1
- package/dist/{chunk-W7IP6RT3.cjs → chunk-WBVWV2V7.cjs} +4 -4
- package/dist/{chunk-W7IP6RT3.cjs.map → chunk-WBVWV2V7.cjs.map} +1 -1
- package/dist/{chunk-EEWRLFTI.js → chunk-XB6YHUKW.js} +3 -3
- package/dist/{chunk-EEWRLFTI.js.map → chunk-XB6YHUKW.js.map} +1 -1
- package/dist/{chunk-D354R6T6.js → chunk-ZY4CVNNZ.js} +3 -3
- package/dist/{chunk-D354R6T6.js.map → chunk-ZY4CVNNZ.js.map} +1 -1
- package/dist/command.cjs +4 -4
- package/dist/command.js +2 -2
- package/dist/composer.cjs +7 -5
- package/dist/composer.js +5 -3
- package/dist/context-menu.cjs +4 -4
- package/dist/context-menu.js +2 -2
- package/dist/drawer.cjs +4 -4
- package/dist/drawer.js +2 -2
- package/dist/dropdown.cjs +4 -4
- package/dist/dropdown.js +2 -2
- package/dist/editor.cjs +1 -1
- package/dist/editor.js +1 -1
- package/dist/index.cjs +64 -64
- package/dist/index.d.cts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +16 -16
- package/dist/input.cjs +6 -4
- package/dist/input.js +5 -3
- package/dist/inputs.cjs +4 -4
- package/dist/inputs.js +3 -3
- package/dist/json-editor.cjs +15 -15
- package/dist/json-editor.js +4 -4
- package/dist/magic-wand.cjs +3 -2
- package/dist/magic-wand.d.cts +51 -6
- package/dist/magic-wand.d.ts +51 -6
- package/dist/magic-wand.js +2 -1
- package/dist/mobile-menu.cjs +4 -4
- package/dist/mobile-menu.js +2 -2
- package/dist/modal.cjs +4 -4
- package/dist/modal.js +2 -2
- package/dist/paste-pills.cjs +17 -15
- package/dist/paste-pills.d.cts +3 -1
- package/dist/paste-pills.d.ts +3 -1
- package/dist/paste-pills.js +4 -2
- package/dist/prompt-input.cjs +7 -4
- package/dist/prompt-input.js +6 -3
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/styles.css.map +1 -1
- package/docs/Chart.md +6 -0
- package/docs/MagicWand.md +29 -2
- package/package.json +1 -1
- package/dist/chunk-3WGRVDQR.cjs +0 -39
- package/dist/chunk-3WGRVDQR.cjs.map +0 -1
- package/dist/chunk-7B3HK6TY.cjs.map +0 -1
- package/dist/chunk-CHADHN6M.js +0 -37
- package/dist/chunk-CHADHN6M.js.map +0 -1
- package/dist/chunk-CK6LRROH.js.map +0 -1
- package/dist/chunk-FU6R6BZ4.js.map +0 -1
- package/dist/chunk-KYZNCVRD.js.map +0 -1
- package/dist/chunk-MSRYJETY.cjs.map +0 -1
- package/dist/chunk-NAQJF3G6.cjs.map +0 -1
package/dist/sidebar.js
CHANGED
|
@@ -2,7 +2,7 @@ export { Sidebar, useSidebar } from './chunk-YD4SXA6K.js';
|
|
|
2
2
|
import './chunk-FWCREAIT.js';
|
|
3
3
|
import './chunk-CPY7NHXM.js';
|
|
4
4
|
import './chunk-5U2DZ7AV.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-3K2CEAI7.js';
|
|
6
6
|
import './chunk-MQ6VGG62.js';
|
|
7
7
|
import './chunk-RGANGU7X.js';
|
|
8
8
|
import './chunk-JXE5XID6.js';
|
package/dist/styles.css.map
CHANGED
|
@@ -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 /* 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 PER MODE, SWAP THE PAIR. `--color-brand` and `--color-brand-contrast` only\n mean anything together. Repointing one alone fails QUIETLY -- the button\n still renders, it is just unreadable (a pale surface still carrying white\n text; or, on ghost/outline where brand is the LABEL, dark text on a dark\n background):\n\n .dark { --color-brand: #BFD7EA; --color-brand-contrast: #003057; }\n\n `--color-brand-hover` usually needs no per-mode value: an accent chosen to\n stand against the brand tends to stand against it in both modes.\n\n NOTE: this comment does not survive the build -- `@theme` is emitted\n without it. The consumer-facing copy is in README.md, and that is the one\n to keep correct.\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":[]}
|
|
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 PER MODE, SWAP THE PAIR. `--color-brand` and `--color-brand-contrast` only\n mean anything together. Repointing one alone fails QUIETLY -- the button\n still renders, it is just unreadable (a pale surface still carrying white\n text; or, on ghost/outline where brand is the LABEL, dark text on a dark\n background):\n\n .dark { --color-brand: #BFD7EA; --color-brand-contrast: #003057; }\n\n `--color-brand-hover` usually needs no per-mode value: an accent chosen to\n stand against the brand tends to stand against it in both modes.\n\n NOTE: this comment does not survive the build -- `@theme` is emitted\n without it. The consumer-facing copy is in README.md, and that is the one\n to keep correct.\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 to a ~0 duration. Since 5.51.0\n `useAnimation` also unmounts when no animation runs at all, so this is no\n longer what keeps a closed drawer from staying in the DOM — but a ~0 duration\n keeps the exit on the same path as every other close. */\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/docs/Chart.md
CHANGED
|
@@ -123,4 +123,10 @@ Same as `Chart.Line` without the `fill` prop (area fill is always enabled).
|
|
|
123
123
|
| width | `number` | - | Chart width in px |
|
|
124
124
|
| height | `number` | - | Chart height in px |
|
|
125
125
|
| color | `string` | - | Line color |
|
|
126
|
+
| min | `number` | data minimum | The value the bottom edge stands for. `min={0}` scales from zero, as `Chart.Line` / `Chart.Bar` do. A value below `min` extends the scale. |
|
|
126
127
|
| className | `string` | - | Additional CSS classes |
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
// Activity per minute: a busy-but-quiet minute should not sit on the floor.
|
|
131
|
+
<Chart.Sparkline data={perMinute} min={0} />
|
|
132
|
+
```
|
package/docs/MagicWand.md
CHANGED
|
@@ -36,15 +36,42 @@ const actions: MagicWandAction[] = [
|
|
|
36
36
|
|
|
37
37
|
| Prop | Type | Default | Description |
|
|
38
38
|
|------|------|---------|-------------|
|
|
39
|
-
| value | `string` | — | Controlled textarea
|
|
40
|
-
| onValueChange | `(v: string) => void` | — | Fires on every edit. |
|
|
39
|
+
| value | `string` | — | Controlled value, of the built-in textarea or of `target`. |
|
|
40
|
+
| onValueChange | `(v: string) => void` | — | Fires on every edit, and with an action's result. |
|
|
41
41
|
| actions | `MagicWandAction[]` | — | Action list. Each invokes a callback with the selection. |
|
|
42
|
+
| target | `RefObject<HTMLTextAreaElement \| HTMLInputElement> \| MagicWandTargetAdapter` | — | Act on a field or editor the host renders. MagicWand then renders no textarea, only the wand. See below. |
|
|
42
43
|
| appearance | `"floating" \| "pill"` | `"floating"` | `"pill"` is icon-only and compact. |
|
|
43
44
|
| autoHide | `boolean` | `true` | Hide the wand on click-away or scroll. |
|
|
44
45
|
| rows | `number` | `6` | Textarea rows. |
|
|
45
46
|
| placeholder | `string` | — | Textarea placeholder. |
|
|
46
47
|
| onAction | `(action, selection, replacement) => void` | — | Fires after an action successfully runs. |
|
|
47
48
|
|
|
49
|
+
## Acting on a field you own (`target`)
|
|
50
|
+
|
|
51
|
+
Pass a ref to your own textarea or input. MagicWand listens on it and floats the wand (portalled, viewport-positioned) over the selection; the result still arrives through `onValueChange`, so your `value` stays the one source of truth.
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
const ref = useRef<HTMLTextAreaElement>(null);
|
|
55
|
+
|
|
56
|
+
<textarea ref={ref} value={body} onChange={(e) => setBody(e.target.value)} />
|
|
57
|
+
<MagicWand target={ref} value={body} onValueChange={setBody} actions={actions} />
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
For anything that is not a textarea or input (a code editor, a contenteditable), pass an adapter. It is read-only: the write is `onValueChange`.
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
<MagicWand
|
|
64
|
+
target={{
|
|
65
|
+
element: editorRef, // listened on for mouseup / keyup / select
|
|
66
|
+
getSelection: () => editor.selection(), // { start, end } offsets into `value`, or null
|
|
67
|
+
getSelectionRect: () => editor.selectionRect(), // optional; default: top-centre of `element`
|
|
68
|
+
}}
|
|
69
|
+
value={code}
|
|
70
|
+
onValueChange={setCode}
|
|
71
|
+
actions={actions}
|
|
72
|
+
/>
|
|
73
|
+
```
|
|
74
|
+
|
|
48
75
|
## Action shape
|
|
49
76
|
|
|
50
77
|
```ts
|
package/package.json
CHANGED
package/dist/chunk-3WGRVDQR.cjs
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var react = require('react');
|
|
4
|
-
|
|
5
|
-
// src/hooks/use-animation.ts
|
|
6
|
-
function useAnimation({
|
|
7
|
-
open,
|
|
8
|
-
enterClass,
|
|
9
|
-
exitClass
|
|
10
|
-
}) {
|
|
11
|
-
const [mounted, setMounted] = react.useState(open);
|
|
12
|
-
const [animClass, setAnimClass] = react.useState(open ? enterClass : "");
|
|
13
|
-
const ref = react.useRef(null);
|
|
14
|
-
react.useEffect(() => {
|
|
15
|
-
if (open) {
|
|
16
|
-
setMounted(true);
|
|
17
|
-
setAnimClass(enterClass);
|
|
18
|
-
} else if (mounted) {
|
|
19
|
-
setAnimClass(exitClass);
|
|
20
|
-
}
|
|
21
|
-
}, [open, enterClass, exitClass, mounted]);
|
|
22
|
-
const handleAnimationEnd = react.useCallback(() => {
|
|
23
|
-
if (!open) {
|
|
24
|
-
setMounted(false);
|
|
25
|
-
setAnimClass("");
|
|
26
|
-
}
|
|
27
|
-
}, [open]);
|
|
28
|
-
react.useEffect(() => {
|
|
29
|
-
const el = ref.current;
|
|
30
|
-
if (!el) return;
|
|
31
|
-
el.addEventListener("animationend", handleAnimationEnd);
|
|
32
|
-
return () => el.removeEventListener("animationend", handleAnimationEnd);
|
|
33
|
-
}, [handleAnimationEnd, mounted]);
|
|
34
|
-
return { mounted, className: animClass, ref };
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
exports.useAnimation = useAnimation;
|
|
38
|
-
//# sourceMappingURL=chunk-3WGRVDQR.cjs.map
|
|
39
|
-
//# sourceMappingURL=chunk-3WGRVDQR.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-animation.ts"],"names":["useState","useRef","useEffect","useCallback"],"mappings":";;;;;AAcO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA4C;AAC1C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,IAAIA,cAAA,CAAS,IAAA,GAAO,aAAa,EAAE,CAAA;AACjE,EAAA,MAAM,GAAA,GAAMC,aAA2B,IAAI,CAAA;AAE3C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,YAAA,CAAa,UAAU,CAAA;AAAA,IACzB,WAAW,OAAA,EAAS;AAClB,MAAA,YAAA,CAAa,SAAS,CAAA;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,OAAO,CAAC,CAAA;AAEzC,EAAA,MAAM,kBAAA,GAAqBC,kBAAY,MAAM;AAC3C,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,YAAA,CAAa,EAAE,CAAA;AAAA,IACjB;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAD,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,EAAA,CAAG,gBAAA,CAAiB,gBAAgB,kBAAkB,CAAA;AACtD,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,cAAA,EAAgB,kBAAkB,CAAA;AAAA,EACxE,CAAA,EAAG,CAAC,kBAAA,EAAoB,OAAO,CAAC,CAAA;AAEhC,EAAA,OAAO,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,GAAA,EAAI;AAC9C","file":"chunk-3WGRVDQR.cjs","sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ninterface UseAnimationOptions {\n open: boolean;\n enterClass: string;\n exitClass: string;\n}\n\ninterface UseAnimationReturn {\n mounted: boolean;\n className: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\nexport function useAnimation({\n open,\n enterClass,\n exitClass,\n}: UseAnimationOptions): UseAnimationReturn {\n const [mounted, setMounted] = useState(open);\n const [animClass, setAnimClass] = useState(open ? enterClass : \"\");\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n setAnimClass(enterClass);\n } else if (mounted) {\n setAnimClass(exitClass);\n }\n }, [open, enterClass, exitClass, mounted]);\n\n const handleAnimationEnd = useCallback(() => {\n if (!open) {\n setMounted(false);\n setAnimClass(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n el.addEventListener(\"animationend\", handleAnimationEnd);\n return () => el.removeEventListener(\"animationend\", handleAnimationEnd);\n }, [handleAnimationEnd, mounted]);\n\n return { mounted, className: animClass, ref };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Chart/chart.utils.ts","../src/components/Chart/ChartBar.tsx","../src/components/Chart/ChartDonut.tsx","../src/components/Chart/ChartAxis.tsx","../src/components/Chart/ChartGrid.tsx","../src/components/Chart/ChartTooltip.tsx","../src/components/Chart/ChartLine.tsx","../src/components/Chart/ChartArea.tsx","../src/components/Chart/ChartPie.tsx","../src/components/Chart/ChartSparkline.tsx","../src/components/Chart/ChartHorizontalBar.tsx","../src/components/Chart/ChartStackedBar.tsx","../src/components/Chart/Chart.tsx"],"names":["useMemo","jsxs","cn","jsx","useRef","useState","PADDING"],"mappings":"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","file":"chunk-7B3HK6TY.cjs","sourcesContent":["export const DEFAULT_COLORS = [\n \"#3b82f6\", \"#10b981\", \"#f59e0b\", \"#ef4444\", \"#8b5cf6\",\n \"#06b6d4\", \"#ec4899\", \"#f97316\",\n];\n\nexport function createLinearScale(\n domain: [number, number],\n range: [number, number],\n): (value: number) => number {\n const [d0, d1] = domain;\n const [r0, r1] = range;\n const span = d1 - d0 || 1;\n return (value: number) => r0 + ((value - d0) / span) * (r1 - r0);\n}\n\nexport function linearPath(points: [number, number][]): string {\n if (points.length === 0) return \"\";\n return points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p[0]},${p[1]}`).join(\" \");\n}\n\nexport function monotonePath(points: [number, number][]): string {\n if (points.length < 2) return linearPath(points);\n if (points.length === 2) return linearPath(points);\n\n const n = points.length;\n const dx: number[] = [];\n const dy: number[] = [];\n const m: number[] = [];\n\n for (let i = 0; i < n - 1; i++) {\n dx.push(points[i + 1][0] - points[i][0]);\n dy.push(points[i + 1][1] - points[i][1]);\n m.push(dy[i] / (dx[i] || 1));\n }\n\n // Fritsch-Carlson tangents\n const tangents: number[] = [m[0]];\n for (let i = 1; i < n - 1; i++) {\n if (m[i - 1] * m[i] <= 0) {\n tangents.push(0);\n } else {\n tangents.push((m[i - 1] + m[i]) / 2);\n }\n }\n tangents.push(m[n - 2]);\n\n // Clamp tangents\n for (let i = 0; i < n - 1; i++) {\n if (Math.abs(m[i]) < 1e-6) {\n tangents[i] = 0;\n tangents[i + 1] = 0;\n } else {\n const a = tangents[i] / m[i];\n const b = tangents[i + 1] / m[i];\n const s = a * a + b * b;\n if (s > 9) {\n const t = 3 / Math.sqrt(s);\n tangents[i] = t * a * m[i];\n tangents[i + 1] = t * b * m[i];\n }\n }\n }\n\n let d = `M${points[0][0]},${points[0][1]}`;\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n const dxi = dx[i] / 3;\n const cp1x = p0[0] + dxi;\n const cp1y = p0[1] + tangents[i] * dxi;\n const cp2x = p1[0] - dxi;\n const cp2y = p1[1] - tangents[i + 1] * dxi;\n d += ` C${cp1x},${cp1y} ${cp2x},${cp2y} ${p1[0]},${p1[1]}`;\n }\n\n return d;\n}\n\nexport function areaPath(points: [number, number][], baseline: number): string {\n if (points.length === 0) return \"\";\n const top = monotonePath(points);\n const lastPoint = points[points.length - 1];\n const firstPoint = points[0];\n return `${top} L${lastPoint[0]},${baseline} L${firstPoint[0]},${baseline} Z`;\n}\n\nexport function computeTicks(min: number, max: number, count: number = 5): number[] {\n if (count < 2) return [min];\n const ticks: number[] = [];\n const step = (max - min) / (count - 1);\n for (let i = 0; i < count; i++) {\n ticks.push(min + step * i);\n }\n return ticks;\n}\n\nexport function niceNum(range: number, round: boolean): number {\n const exponent = Math.floor(Math.log10(range));\n const fraction = range / Math.pow(10, exponent);\n let niceFraction: number;\n if (round) {\n if (fraction < 1.5) niceFraction = 1;\n else if (fraction < 3) niceFraction = 2;\n else if (fraction < 7) niceFraction = 5;\n else niceFraction = 10;\n } else {\n if (fraction <= 1) niceFraction = 1;\n else if (fraction <= 2) niceFraction = 2;\n else if (fraction <= 5) niceFraction = 5;\n else niceFraction = 10;\n }\n return niceFraction * Math.pow(10, exponent);\n}\n\nexport function niceScale(min: number, max: number, tickCount: number = 5): { min: number; max: number; ticks: number[] } {\n if (min === max) {\n return { min: min - 1, max: max + 1, ticks: computeTicks(min - 1, max + 1, tickCount) };\n }\n const range = niceNum(max - min, false);\n const tickSpacing = niceNum(range / (tickCount - 1), true);\n const niceMin = Math.floor(min / tickSpacing) * tickSpacing;\n const niceMax = Math.ceil(max / tickSpacing) * tickSpacing;\n const ticks: number[] = [];\n for (let v = niceMin; v <= niceMax + tickSpacing * 0.5; v += tickSpacing) {\n ticks.push(Math.round(v * 1e10) / 1e10);\n }\n return { min: niceMin, max: niceMax, ticks };\n}\n","import { useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { DEFAULT_COLORS } from \"./chart.utils\";\nimport type { ChartBarProps } from \"./Chart.types\";\n\nexport function ChartBar({\n data,\n height = 200,\n showValues = false,\n className,\n}: ChartBarProps) {\n const maxValue = useMemo(\n () => Math.max(...data.map((d) => d.value), 1),\n [data],\n );\n\n return (\n <div className={cn(\"w-full\", className)} data-react-fancy-chart-bar=\"\">\n {showValues && (\n <div className=\"mb-1 flex gap-2\">\n {data.map((item) => (\n <div\n key={item.label}\n className=\"flex-1 text-center text-xs font-medium text-zinc-500 dark:text-zinc-400\"\n >\n {item.value}\n </div>\n ))}\n </div>\n )}\n <div\n className=\"flex items-end gap-2\"\n style={{ height }}\n >\n {data.map((item, i) => {\n const barHeight = (item.value / maxValue) * 100;\n const color = item.color ?? DEFAULT_COLORS[i % DEFAULT_COLORS.length];\n\n return (\n <div\n key={item.label}\n className=\"flex h-full flex-1 items-end justify-center\"\n data-react-fancy-chart-bar-column=\"\"\n >\n <div\n data-react-fancy-chart-bar-item=\"\"\n className=\"w-full rounded-t-md transition-all duration-500\"\n style={{\n height: `${barHeight}%`,\n backgroundColor: color,\n minHeight: 4,\n }}\n />\n </div>\n );\n })}\n </div>\n <div className=\"mt-2 flex gap-2\">\n {data.map((item) => (\n <div\n key={item.label}\n className=\"flex-1 text-center text-xs text-zinc-500 dark:text-zinc-400\"\n >\n {item.label}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nChartBar.displayName = \"ChartBar\";\n","import { useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { DEFAULT_COLORS } from \"./chart.utils\";\nimport type { ChartDonutProps } from \"./Chart.types\";\n\nexport function ChartDonut({\n data,\n size = 160,\n strokeWidth = 24,\n showLegend = true,\n className,\n}: ChartDonutProps) {\n const total = useMemo(() => data.reduce((s, d) => s + d.value, 0), [data]);\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n\n const segments = useMemo(() => {\n let offset = 0;\n return data.map((item, i) => {\n const pct = total > 0 ? item.value / total : 0;\n const dash = pct * circumference;\n const gap = circumference - dash;\n const rotation = (offset / total) * 360;\n offset += item.value;\n\n return {\n ...item,\n dash,\n gap,\n rotation,\n color: item.color ?? DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n };\n });\n }, [data, total, circumference]);\n\n return (\n <div data-react-fancy-chart-donut=\"\" className={cn(\"inline-flex items-center gap-6\", className)}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n {segments.map((seg) => (\n <circle\n key={seg.label}\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke={seg.color}\n strokeWidth={strokeWidth}\n strokeDasharray={`${seg.dash} ${seg.gap}`}\n strokeLinecap=\"round\"\n transform={`rotate(${seg.rotation - 90} ${size / 2} ${size / 2})`}\n />\n ))}\n </svg>\n {showLegend && (\n <div className=\"flex flex-col gap-2\">\n {segments.map((seg) => (\n <div key={seg.label} className=\"flex items-center gap-2 text-sm\">\n <div\n className=\"h-3 w-3 rounded-full\"\n style={{ backgroundColor: seg.color }}\n />\n <span className=\"text-zinc-600 dark:text-zinc-400\">\n {seg.label}\n </span>\n <span className=\"font-medium\">{seg.value}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nChartDonut.displayName = \"ChartDonut\";\n","interface ChartAxisProps {\n orientation: \"x\" | \"y\";\n ticks: number[];\n scale: (value: number) => number;\n x: number;\n y: number;\n length: number;\n label?: string;\n formatTick?: (value: number) => string;\n}\n\nfunction defaultFormat(value: number): string {\n if (Math.abs(value) >= 1000) return `${(value / 1000).toFixed(value % 1000 === 0 ? 0 : 1)}k`;\n if (Number.isInteger(value)) return String(value);\n return value.toFixed(1);\n}\n\nexport function ChartAxis({\n orientation,\n ticks,\n scale,\n x,\n y,\n length,\n label,\n formatTick = defaultFormat,\n}: ChartAxisProps) {\n if (orientation === \"x\") {\n return (\n <g>\n <line x1={x} y1={y} x2={x + length} y2={y} stroke=\"currentColor\" className=\"text-zinc-200 dark:text-zinc-700\" />\n {ticks.map((tick) => {\n const tx = scale(tick);\n return (\n <g key={tick}>\n <line x1={tx} y1={y} x2={tx} y2={y + 4} stroke=\"currentColor\" className=\"text-zinc-300 dark:text-zinc-600\" />\n <text x={tx} y={y + 16} textAnchor=\"middle\" className=\"fill-zinc-500 text-[10px] dark:fill-zinc-400\">\n {formatTick(tick)}\n </text>\n </g>\n );\n })}\n {label && (\n <text x={x + length / 2} y={y + 32} textAnchor=\"middle\" className=\"fill-zinc-500 text-[11px] dark:fill-zinc-400\">\n {label}\n </text>\n )}\n </g>\n );\n }\n\n return (\n <g>\n <line x1={x} y1={y} x2={x} y2={y + length} stroke=\"currentColor\" className=\"text-zinc-200 dark:text-zinc-700\" />\n {ticks.map((tick) => {\n const ty = scale(tick);\n return (\n <g key={tick}>\n <line x1={x - 4} y1={ty} x2={x} y2={ty} stroke=\"currentColor\" className=\"text-zinc-300 dark:text-zinc-600\" />\n <text x={x - 8} y={ty + 3} textAnchor=\"end\" className=\"fill-zinc-500 text-[10px] dark:fill-zinc-400\">\n {formatTick(tick)}\n </text>\n </g>\n );\n })}\n {label && (\n <text\n x={x - 36}\n y={y + length / 2}\n textAnchor=\"middle\"\n transform={`rotate(-90, ${x - 36}, ${y + length / 2})`}\n className=\"fill-zinc-500 text-[11px] dark:fill-zinc-400\"\n >\n {label}\n </text>\n )}\n </g>\n );\n}\n\nChartAxis.displayName = \"ChartAxis\";\n","interface ChartGridProps {\n x: number;\n y: number;\n width: number;\n height: number;\n horizontal?: { ticks: number[]; scale: (v: number) => number };\n vertical?: { ticks: number[]; scale: (v: number) => number };\n}\n\nexport function ChartGrid({ x, y, width, height, horizontal, vertical }: ChartGridProps) {\n return (\n <g>\n {horizontal?.ticks.map((tick) => {\n const ty = horizontal.scale(tick);\n return (\n <line\n key={`h-${tick}`}\n x1={x}\n y1={ty}\n x2={x + width}\n y2={ty}\n stroke=\"currentColor\"\n strokeDasharray=\"4 4\"\n className=\"text-zinc-100 dark:text-zinc-800\"\n />\n );\n })}\n {vertical?.ticks.map((tick) => {\n const tx = vertical.scale(tick);\n return (\n <line\n key={`v-${tick}`}\n x1={tx}\n y1={y}\n x2={tx}\n y2={y + height}\n stroke=\"currentColor\"\n strokeDasharray=\"4 4\"\n className=\"text-zinc-100 dark:text-zinc-800\"\n />\n );\n })}\n </g>\n );\n}\n\nChartGrid.displayName = \"ChartGrid\";\n","import { cn } from \"../../utils/cn\";\n\ninterface ChartTooltipProps {\n visible: boolean;\n x: number;\n y: number;\n content: React.ReactNode;\n className?: string;\n}\n\nexport function ChartTooltip({ visible, x, y, content, className }: ChartTooltipProps) {\n if (!visible) return null;\n\n return (\n <div\n className={cn(\n \"pointer-events-none absolute z-50 rounded-lg border border-zinc-200 bg-white px-3 py-2 text-xs shadow-lg dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n style={{\n left: x,\n top: y,\n transform: \"translate(-50%, -100%) translateY(-8px)\",\n }}\n >\n {content}\n </div>\n );\n}\n\nChartTooltip.displayName = \"ChartTooltip\";\n","import { useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { DEFAULT_COLORS, createLinearScale, linearPath, monotonePath, niceScale } from \"./chart.utils\";\nimport { ChartAxis } from \"./ChartAxis\";\nimport { ChartGrid } from \"./ChartGrid\";\nimport { ChartTooltip } from \"./ChartTooltip\";\nimport type { ChartLineProps } from \"./Chart.types\";\n\nconst PADDING = { top: 16, right: 16, bottom: 40, left: 48 };\n\nexport function ChartLine({\n labels,\n series,\n height = 240,\n curve = \"monotone\",\n showDots = true,\n fill = false,\n fillOpacity = 0.1,\n xAxis = true,\n yAxis = true,\n grid = true,\n tooltip = true,\n animate = true,\n responsive = false,\n className,\n}: ChartLineProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [hoverInfo, setHoverInfo] = useState<{ x: number; y: number; labelIdx: number } | null>(null);\n const width = 500;\n\n const plotWidth = width - PADDING.left - PADDING.right;\n const plotHeight = height - PADDING.top - PADDING.bottom;\n\n const allValues = series.flatMap((s) => s.data);\n const dataMin = Math.min(0, ...allValues);\n const dataMax = Math.max(...allValues);\n\n const { min: yMin, max: yMax, ticks: yTicks } = useMemo(\n () => niceScale(dataMin, dataMax, 5),\n [dataMin, dataMax],\n );\n\n const xScale = useMemo(\n () => createLinearScale([0, labels.length - 1], [PADDING.left, PADDING.left + plotWidth]),\n [labels.length, plotWidth],\n );\n const yScale = useMemo(\n () => createLinearScale([yMin, yMax], [PADDING.top + plotHeight, PADDING.top]),\n [yMin, yMax, plotHeight],\n );\n\n const pathFn = curve === \"monotone\" ? monotonePath : linearPath;\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!tooltip || !containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const svgX = ((e.clientX - rect.left) / rect.width) * width;\n const closestIdx = Math.round(((svgX - PADDING.left) / plotWidth) * (labels.length - 1));\n const idx = Math.max(0, Math.min(labels.length - 1, closestIdx));\n setHoverInfo({\n x: ((xScale(idx) / width) * rect.width),\n y: e.clientY - rect.top,\n labelIdx: idx,\n });\n };\n\n const svgProps = responsive\n ? { viewBox: `0 0 ${width} ${height}`, width: \"100%\", preserveAspectRatio: \"xMidYMid meet\" as const }\n : { width, height };\n\n return (\n <div\n ref={containerRef}\n data-react-fancy-chart-line=\"\"\n className={cn(\"relative\", className)}\n onMouseMove={handleMouseMove}\n onMouseLeave={() => setHoverInfo(null)}\n >\n <svg {...svgProps} height={responsive ? undefined : height}>\n {grid && (\n <ChartGrid\n x={PADDING.left}\n y={PADDING.top}\n width={plotWidth}\n height={plotHeight}\n horizontal={{ ticks: yTicks, scale: yScale }}\n />\n )}\n\n {series.map((s, si) => {\n const color = s.color ?? DEFAULT_COLORS[si % DEFAULT_COLORS.length];\n const points: [number, number][] = s.data.map((v, i) => [xScale(i), yScale(v)]);\n const d = pathFn(points);\n\n return (\n <g key={s.label}>\n {fill && (\n <path\n d={`${d} L${points[points.length - 1][0]},${yScale(yMin)} L${points[0][0]},${yScale(yMin)} Z`}\n fill={color}\n fillOpacity={fillOpacity}\n />\n )}\n <path\n d={d}\n fill=\"none\"\n stroke={color}\n strokeWidth={2}\n className={animate ? \"transition-all duration-500\" : \"\"}\n />\n {showDots && points.map(([px, py], i) => (\n <circle\n key={i}\n cx={px}\n cy={py}\n r={3}\n fill=\"white\"\n stroke={color}\n strokeWidth={2}\n />\n ))}\n </g>\n );\n })}\n\n {yAxis && (\n <ChartAxis orientation=\"y\" ticks={yTicks} scale={yScale} x={PADDING.left} y={PADDING.top} length={plotHeight} />\n )}\n {xAxis && (\n <ChartAxis\n orientation=\"x\"\n ticks={labels.map((_, i) => i)}\n scale={xScale}\n x={PADDING.left}\n y={PADDING.top + plotHeight}\n length={plotWidth}\n formatTick={(v) => labels[Math.round(v)] ?? \"\"}\n />\n )}\n\n {/* Hover line */}\n {hoverInfo !== null && (\n <line\n x1={xScale(hoverInfo.labelIdx)}\n y1={PADDING.top}\n x2={xScale(hoverInfo.labelIdx)}\n y2={PADDING.top + plotHeight}\n stroke=\"currentColor\"\n strokeDasharray=\"4 4\"\n className=\"text-zinc-300 dark:text-zinc-600\"\n />\n )}\n </svg>\n\n {tooltip && hoverInfo !== null && (\n <ChartTooltip\n visible\n x={hoverInfo.x}\n y={hoverInfo.y}\n content={\n <div>\n <div className=\"mb-1 font-medium\">{labels[hoverInfo.labelIdx]}</div>\n {series.map((s, si) => (\n <div key={s.label} className=\"flex items-center gap-2\">\n <span\n className=\"inline-block h-2 w-2 rounded-full\"\n style={{ backgroundColor: s.color ?? DEFAULT_COLORS[si % DEFAULT_COLORS.length] }}\n />\n <span className=\"text-zinc-500\">{s.label}:</span>\n <span className=\"font-medium\">{s.data[hoverInfo.labelIdx]}</span>\n </div>\n ))}\n </div>\n }\n />\n )}\n\n {/* Legend */}\n {series.length > 1 && (\n <div className=\"mt-2 flex flex-wrap items-center justify-center gap-4\">\n {series.map((s, si) => (\n <div key={s.label} className=\"flex items-center gap-1.5 text-xs\">\n <span\n className=\"inline-block h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: s.color ?? DEFAULT_COLORS[si % DEFAULT_COLORS.length] }}\n />\n <span className=\"text-zinc-600 dark:text-zinc-400\">{s.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nChartLine.displayName = \"ChartLine\";\n","import { ChartLine } from \"./ChartLine\";\nimport type { ChartAreaProps } from \"./Chart.types\";\n\nexport function ChartArea(props: ChartAreaProps) {\n return <ChartLine {...props} fill fillOpacity={0.15} />;\n}\n\nChartArea.displayName = \"ChartArea\";\n","import { useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { DEFAULT_COLORS } from \"./chart.utils\";\nimport { ChartTooltip } from \"./ChartTooltip\";\nimport type { ChartPieProps } from \"./Chart.types\";\n\nexport function ChartPie({\n data,\n size = 200,\n showLabels = false,\n tooltip = true,\n className,\n}: ChartPieProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [hoverIdx, setHoverIdx] = useState<number | null>(null);\n const [tooltipPos, setTooltipPos] = useState({ x: 0, y: 0 });\n\n const total = useMemo(() => data.reduce((s, d) => s + d.value, 0), [data]);\n const center = size / 2;\n const radius = size / 2 - 4;\n\n const slices = useMemo(() => {\n let startAngle = -Math.PI / 2;\n return data.map((item, i) => {\n const pct = total > 0 ? item.value / total : 0;\n const angle = pct * 2 * Math.PI;\n const endAngle = startAngle + angle;\n const largeArc = angle > Math.PI ? 1 : 0;\n\n const x1 = center + radius * Math.cos(startAngle);\n const y1 = center + radius * Math.sin(startAngle);\n const x2 = center + radius * Math.cos(endAngle);\n const y2 = center + radius * Math.sin(endAngle);\n\n const midAngle = startAngle + angle / 2;\n const labelX = center + (radius * 0.65) * Math.cos(midAngle);\n const labelY = center + (radius * 0.65) * Math.sin(midAngle);\n\n const d = pct >= 1\n ? `M${center},${center - radius} A${radius},${radius} 0 1 1 ${center},${center + radius} A${radius},${radius} 0 1 1 ${center},${center - radius}`\n : `M${center},${center} L${x1},${y1} A${radius},${radius} 0 ${largeArc} 1 ${x2},${y2} Z`;\n\n const color = item.color ?? DEFAULT_COLORS[i % DEFAULT_COLORS.length];\n startAngle = endAngle;\n\n return { ...item, d, color, labelX, labelY, pct };\n });\n }, [data, total, center, radius]);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n setTooltipPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n };\n\n return (\n <div ref={containerRef} data-react-fancy-chart-pie=\"\" className={cn(\"relative inline-flex items-center gap-6\", className)} onMouseMove={handleMouseMove}>\n <svg width={size} height={size}>\n {slices.map((slice, i) => (\n <g key={slice.label}>\n <path\n d={slice.d}\n fill={slice.color}\n stroke=\"white\"\n strokeWidth={2}\n className=\"transition-opacity\"\n opacity={hoverIdx !== null && hoverIdx !== i ? 0.5 : 1}\n onMouseEnter={() => setHoverIdx(i)}\n onMouseLeave={() => setHoverIdx(null)}\n />\n {showLabels && slice.pct > 0.05 && (\n <text\n x={slice.labelX}\n y={slice.labelY}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n className=\"fill-white text-[10px] font-medium\"\n >\n {Math.round(slice.pct * 100)}%\n </text>\n )}\n </g>\n ))}\n </svg>\n\n {/* Legend */}\n <div className=\"flex flex-col gap-2\">\n {slices.map((slice) => (\n <div key={slice.label} className=\"flex items-center gap-2 text-sm\">\n <div className=\"h-3 w-3 rounded-full\" style={{ backgroundColor: slice.color }} />\n <span className=\"text-zinc-600 dark:text-zinc-400\">{slice.label}</span>\n <span className=\"font-medium\">{slice.value}</span>\n </div>\n ))}\n </div>\n\n {tooltip && hoverIdx !== null && (\n <ChartTooltip\n visible\n x={tooltipPos.x}\n y={tooltipPos.y}\n content={\n <div>\n <span className=\"font-medium\">{slices[hoverIdx].label}</span>:{\" \"}\n {slices[hoverIdx].value} ({Math.round(slices[hoverIdx].pct * 100)}%)\n </div>\n }\n />\n )}\n </div>\n );\n}\n\nChartPie.displayName = \"ChartPie\";\n","import { useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { createLinearScale, monotonePath } from \"./chart.utils\";\nimport type { ChartSparklineProps } from \"./Chart.types\";\n\nexport function ChartSparkline({\n data,\n width = 120,\n height = 32,\n color = \"#3b82f6\",\n className,\n}: ChartSparklineProps) {\n const d = useMemo(() => {\n if (data.length < 2) return \"\";\n const min = Math.min(...data);\n const max = Math.max(...data);\n const xScale = createLinearScale([0, data.length - 1], [1, width - 1]);\n const yScale = createLinearScale([min, max], [height - 2, 2]);\n const points: [number, number][] = data.map((v, i) => [xScale(i), yScale(v)]);\n return monotonePath(points);\n }, [data, width, height]);\n\n return (\n <svg\n width={width}\n height={height}\n className={cn(\"inline-block\", className)}\n data-react-fancy-chart-sparkline=\"\"\n >\n <path d={d} fill=\"none\" stroke={color} strokeWidth={1.5} strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nChartSparkline.displayName = \"ChartSparkline\";\n","import { useMemo } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { DEFAULT_COLORS } from \"./chart.utils\";\nimport type { ChartHorizontalBarProps } from \"./Chart.types\";\n\nexport function ChartHorizontalBar({\n data,\n height,\n showValues = true,\n className,\n}: ChartHorizontalBarProps) {\n const maxValue = useMemo(\n () => Math.max(...data.map((d) => d.value), 1),\n [data],\n );\n\n const barHeight = 28;\n const gap = 8;\n const computedHeight = height ?? data.length * (barHeight + gap) - gap;\n\n return (\n <div className={cn(\"w-full\", className)} data-react-fancy-chart-horizontal-bar=\"\">\n <div className=\"flex flex-col gap-2\" style={{ height: computedHeight }}>\n {data.map((item, i) => {\n const widthPct = (item.value / maxValue) * 100;\n const color = item.color ?? DEFAULT_COLORS[i % DEFAULT_COLORS.length];\n\n return (\n <div key={item.label} className=\"flex items-center gap-3\">\n <span className=\"w-20 shrink-0 truncate text-right text-xs text-zinc-500 dark:text-zinc-400\">\n {item.label}\n </span>\n <div className=\"relative flex-1\">\n <div\n className=\"h-7 rounded-r-md transition-all duration-500\"\n style={{\n width: `${widthPct}%`,\n backgroundColor: color,\n minWidth: 4,\n }}\n />\n {showValues && (\n <span className=\"absolute top-1/2 left-full ml-2 -translate-y-1/2 text-xs font-medium text-zinc-500\">\n {item.value}\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nChartHorizontalBar.displayName = \"ChartHorizontalBar\";\n","import { useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { DEFAULT_COLORS, createLinearScale, niceScale } from \"./chart.utils\";\nimport { ChartAxis } from \"./ChartAxis\";\nimport { ChartGrid } from \"./ChartGrid\";\nimport { ChartTooltip } from \"./ChartTooltip\";\nimport type { ChartStackedBarProps } from \"./Chart.types\";\n\nconst PADDING = { top: 16, right: 16, bottom: 40, left: 48 };\n\nexport function ChartStackedBar({\n labels,\n series,\n height = 240,\n xAxis = true,\n yAxis = true,\n grid = true,\n tooltip = true,\n responsive = false,\n className,\n}: ChartStackedBarProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const [hoverIdx, setHoverIdx] = useState<number | null>(null);\n const [tooltipPos, setTooltipPos] = useState({ x: 0, y: 0 });\n const width = 500;\n\n const plotWidth = width - PADDING.left - PADDING.right;\n const plotHeight = height - PADDING.top - PADDING.bottom;\n\n const stackTotals = useMemo(\n () => labels.map((_, li) => series.reduce((sum, s) => sum + (s.data[li] ?? 0), 0)),\n [labels, series],\n );\n\n const maxTotal = Math.max(...stackTotals, 1);\n const { min: yMin, max: yMax, ticks: yTicks } = useMemo(\n () => niceScale(0, maxTotal, 5),\n [maxTotal],\n );\n\n const yScale = useMemo(\n () => createLinearScale([yMin, yMax], [PADDING.top + plotHeight, PADDING.top]),\n [yMin, yMax, plotHeight],\n );\n\n const barWidth = Math.max(8, (plotWidth / labels.length) * 0.6);\n const barGap = (plotWidth - barWidth * labels.length) / (labels.length + 1);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!tooltip || !containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n setTooltipPos({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n };\n\n const svgProps = responsive\n ? { viewBox: `0 0 ${width} ${height}`, width: \"100%\", preserveAspectRatio: \"xMidYMid meet\" as const }\n : { width, height };\n\n return (\n <div ref={containerRef} data-react-fancy-chart-stacked-bar=\"\" className={cn(\"relative\", className)} onMouseMove={handleMouseMove}>\n <svg {...svgProps} height={responsive ? undefined : height}>\n {grid && (\n <ChartGrid\n x={PADDING.left}\n y={PADDING.top}\n width={plotWidth}\n height={plotHeight}\n horizontal={{ ticks: yTicks, scale: yScale }}\n />\n )}\n\n {labels.map((label, li) => {\n const x = PADDING.left + barGap * (li + 1) + barWidth * li;\n let cumulative = 0;\n\n return (\n <g\n key={label}\n onMouseEnter={() => setHoverIdx(li)}\n onMouseLeave={() => setHoverIdx(null)}\n >\n {series.map((s, si) => {\n const val = s.data[li] ?? 0;\n const y0 = yScale(cumulative);\n const y1 = yScale(cumulative + val);\n cumulative += val;\n const color = s.color ?? DEFAULT_COLORS[si % DEFAULT_COLORS.length];\n\n return (\n <rect\n key={s.label}\n x={x}\n y={y1}\n width={barWidth}\n height={Math.max(0, y0 - y1)}\n fill={color}\n rx={si === series.length - 1 ? 3 : 0}\n className=\"transition-opacity\"\n opacity={hoverIdx !== null && hoverIdx !== li ? 0.5 : 1}\n />\n );\n })}\n </g>\n );\n })}\n\n {yAxis && (\n <ChartAxis orientation=\"y\" ticks={yTicks} scale={yScale} x={PADDING.left} y={PADDING.top} length={plotHeight} />\n )}\n {xAxis && (\n <ChartAxis\n orientation=\"x\"\n ticks={labels.map((_, i) => i)}\n scale={(i) => PADDING.left + barGap * (i + 1) + barWidth * i + barWidth / 2}\n x={PADDING.left}\n y={PADDING.top + plotHeight}\n length={plotWidth}\n formatTick={(v) => labels[Math.round(v)] ?? \"\"}\n />\n )}\n </svg>\n\n {tooltip && hoverIdx !== null && (\n <ChartTooltip\n visible\n x={tooltipPos.x}\n y={tooltipPos.y}\n content={\n <div>\n <div className=\"mb-1 font-medium\">{labels[hoverIdx]}</div>\n {series.map((s, si) => (\n <div key={s.label} className=\"flex items-center gap-2\">\n <span\n className=\"inline-block h-2 w-2 rounded-full\"\n style={{ backgroundColor: s.color ?? DEFAULT_COLORS[si % DEFAULT_COLORS.length] }}\n />\n <span className=\"text-zinc-500\">{s.label}:</span>\n <span className=\"font-medium\">{s.data[hoverIdx] ?? 0}</span>\n </div>\n ))}\n <div className=\"mt-1 border-t border-zinc-200 pt-1 text-zinc-500 dark:border-zinc-700\">\n Total: <span className=\"font-medium text-zinc-900 dark:text-white\">{stackTotals[hoverIdx]}</span>\n </div>\n </div>\n }\n />\n )}\n\n {/* Legend */}\n <div className=\"mt-2 flex flex-wrap items-center justify-center gap-4\">\n {series.map((s, si) => (\n <div key={s.label} className=\"flex items-center gap-1.5 text-xs\">\n <span\n className=\"inline-block h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: s.color ?? DEFAULT_COLORS[si % DEFAULT_COLORS.length] }}\n />\n <span className=\"text-zinc-600 dark:text-zinc-400\">{s.label}</span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nChartStackedBar.displayName = \"ChartStackedBar\";\n","import { ChartBar } from \"./ChartBar\";\nimport { ChartDonut } from \"./ChartDonut\";\nimport { ChartLine } from \"./ChartLine\";\nimport { ChartArea } from \"./ChartArea\";\nimport { ChartPie } from \"./ChartPie\";\nimport { ChartSparkline } from \"./ChartSparkline\";\nimport { ChartHorizontalBar } from \"./ChartHorizontalBar\";\nimport { ChartStackedBar } from \"./ChartStackedBar\";\n\nexport const Chart = {\n Bar: ChartBar,\n Donut: ChartDonut,\n Line: ChartLine,\n Area: ChartArea,\n Pie: ChartPie,\n Sparkline: ChartSparkline,\n HorizontalBar: ChartHorizontalBar,\n StackedBar: ChartStackedBar,\n};\n"]}
|
package/dist/chunk-CHADHN6M.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
2
|
-
|
|
3
|
-
// src/hooks/use-animation.ts
|
|
4
|
-
function useAnimation({
|
|
5
|
-
open,
|
|
6
|
-
enterClass,
|
|
7
|
-
exitClass
|
|
8
|
-
}) {
|
|
9
|
-
const [mounted, setMounted] = useState(open);
|
|
10
|
-
const [animClass, setAnimClass] = useState(open ? enterClass : "");
|
|
11
|
-
const ref = useRef(null);
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
if (open) {
|
|
14
|
-
setMounted(true);
|
|
15
|
-
setAnimClass(enterClass);
|
|
16
|
-
} else if (mounted) {
|
|
17
|
-
setAnimClass(exitClass);
|
|
18
|
-
}
|
|
19
|
-
}, [open, enterClass, exitClass, mounted]);
|
|
20
|
-
const handleAnimationEnd = useCallback(() => {
|
|
21
|
-
if (!open) {
|
|
22
|
-
setMounted(false);
|
|
23
|
-
setAnimClass("");
|
|
24
|
-
}
|
|
25
|
-
}, [open]);
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
const el = ref.current;
|
|
28
|
-
if (!el) return;
|
|
29
|
-
el.addEventListener("animationend", handleAnimationEnd);
|
|
30
|
-
return () => el.removeEventListener("animationend", handleAnimationEnd);
|
|
31
|
-
}, [handleAnimationEnd, mounted]);
|
|
32
|
-
return { mounted, className: animClass, ref };
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export { useAnimation };
|
|
36
|
-
//# sourceMappingURL=chunk-CHADHN6M.js.map
|
|
37
|
-
//# sourceMappingURL=chunk-CHADHN6M.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-animation.ts"],"names":[],"mappings":";;;AAcO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA4C;AAC1C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,IAAI,QAAA,CAAS,IAAA,GAAO,aAAa,EAAE,CAAA;AACjE,EAAA,MAAM,GAAA,GAAM,OAA2B,IAAI,CAAA;AAE3C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,YAAA,CAAa,UAAU,CAAA;AAAA,IACzB,WAAW,OAAA,EAAS;AAClB,MAAA,YAAA,CAAa,SAAS,CAAA;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,IAAA,EAAM,UAAA,EAAY,SAAA,EAAW,OAAO,CAAC,CAAA;AAEzC,EAAA,MAAM,kBAAA,GAAqB,YAAY,MAAM;AAC3C,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,YAAA,CAAa,EAAE,CAAA;AAAA,IACjB;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,EAAA,CAAG,gBAAA,CAAiB,gBAAgB,kBAAkB,CAAA;AACtD,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,cAAA,EAAgB,kBAAkB,CAAA;AAAA,EACxE,CAAA,EAAG,CAAC,kBAAA,EAAoB,OAAO,CAAC,CAAA;AAEhC,EAAA,OAAO,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA,EAAW,GAAA,EAAI;AAC9C","file":"chunk-CHADHN6M.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ninterface UseAnimationOptions {\n open: boolean;\n enterClass: string;\n exitClass: string;\n}\n\ninterface UseAnimationReturn {\n mounted: boolean;\n className: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\nexport function useAnimation({\n open,\n enterClass,\n exitClass,\n}: UseAnimationOptions): UseAnimationReturn {\n const [mounted, setMounted] = useState(open);\n const [animClass, setAnimClass] = useState(open ? enterClass : \"\");\n const ref = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (open) {\n setMounted(true);\n setAnimClass(enterClass);\n } else if (mounted) {\n setAnimClass(exitClass);\n }\n }, [open, enterClass, exitClass, mounted]);\n\n const handleAnimationEnd = useCallback(() => {\n if (!open) {\n setMounted(false);\n setAnimClass(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n el.addEventListener(\"animationend\", handleAnimationEnd);\n return () => el.removeEventListener(\"animationend\", handleAnimationEnd);\n }, [handleAnimationEnd, mounted]);\n\n return { mounted, className: animClass, ref };\n}\n"]}
|