@epilot/spark-ui 0.26.0 → 0.27.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/dist/components/accordion.cjs.map +1 -1
- package/dist/components/accordion.d.cts +1 -1
- package/dist/components/accordion.d.ts +1 -1
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/alert-dialog.cjs +2 -2
- package/dist/components/alert-dialog.cjs.map +1 -1
- package/dist/components/alert-dialog.js +2 -2
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/attachment.d.cts +1 -1
- package/dist/components/attachment.d.ts +1 -1
- package/dist/components/avatar.d.cts +1 -1
- package/dist/components/avatar.d.ts +1 -1
- package/dist/components/badge.cjs +10 -2
- package/dist/components/badge.cjs.map +1 -1
- package/dist/components/badge.d.cts +2 -1
- package/dist/components/badge.d.ts +2 -1
- package/dist/components/badge.js +10 -2
- package/dist/components/badge.js.map +1 -1
- package/dist/components/banner.d.cts +1 -1
- package/dist/components/banner.d.ts +1 -1
- package/dist/components/box.d.cts +1 -1
- package/dist/components/box.d.ts +1 -1
- package/dist/components/bubble.cjs +1 -1
- package/dist/components/bubble.cjs.map +1 -1
- package/dist/components/bubble.d.cts +1 -1
- package/dist/components/bubble.d.ts +1 -1
- package/dist/components/bubble.js +1 -1
- package/dist/components/bubble.js.map +1 -1
- package/dist/components/button-group.d.cts +1 -1
- package/dist/components/button-group.d.ts +1 -1
- package/dist/components/button.cjs +27 -6
- package/dist/components/button.cjs.map +1 -1
- package/dist/components/button.d.cts +9 -8
- package/dist/components/button.d.ts +9 -8
- package/dist/components/button.js +27 -6
- package/dist/components/button.js.map +1 -1
- package/dist/components/callout.cjs +1 -1
- package/dist/components/callout.cjs.map +1 -1
- package/dist/components/callout.d.cts +1 -1
- package/dist/components/callout.d.ts +1 -1
- package/dist/components/callout.js +1 -1
- package/dist/components/callout.js.map +1 -1
- package/dist/components/card.cjs +8 -4
- package/dist/components/card.cjs.map +1 -1
- package/dist/components/card.d.cts +6 -2
- package/dist/components/card.d.ts +6 -2
- package/dist/components/card.js +8 -4
- package/dist/components/card.js.map +1 -1
- package/dist/components/checkbox-group.cjs +31 -0
- package/dist/components/checkbox-group.cjs.map +1 -0
- package/dist/components/checkbox-group.d.cts +27 -0
- package/dist/components/checkbox-group.d.ts +27 -0
- package/dist/components/checkbox-group.js +28 -0
- package/dist/components/checkbox-group.js.map +1 -0
- package/dist/components/checkbox.d.cts +1 -1
- package/dist/components/checkbox.d.ts +1 -1
- package/dist/components/dialog.cjs +2 -2
- package/dist/components/dialog.cjs.map +1 -1
- package/dist/components/dialog.js +2 -2
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/drawer.cjs +1 -1
- package/dist/components/drawer.cjs.map +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/empty-state.cjs +3 -13
- package/dist/components/empty-state.cjs.map +1 -1
- package/dist/components/empty-state.js +3 -13
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/energy-breakdown.cjs +1 -1
- package/dist/components/energy-breakdown.cjs.map +1 -1
- package/dist/components/energy-breakdown.js +1 -1
- package/dist/components/energy-breakdown.js.map +1 -1
- package/dist/components/entity-card.cjs +1 -1
- package/dist/components/entity-card.cjs.map +1 -1
- package/dist/components/entity-card.js +1 -1
- package/dist/components/entity-card.js.map +1 -1
- package/dist/components/field.cjs +113 -18
- package/dist/components/field.cjs.map +1 -1
- package/dist/components/field.d.cts +16 -3
- package/dist/components/field.d.ts +16 -3
- package/dist/components/field.js +114 -20
- package/dist/components/field.js.map +1 -1
- package/dist/components/input-group.cjs +9 -9
- package/dist/components/input-group.cjs.map +1 -1
- package/dist/components/input-group.d.cts +1 -1
- package/dist/components/input-group.d.ts +1 -1
- package/dist/components/input-group.js +9 -9
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/input.d.cts +1 -1
- package/dist/components/input.d.ts +1 -1
- package/dist/components/list.cjs +21 -5
- package/dist/components/list.cjs.map +1 -1
- package/dist/components/list.d.cts +13 -5
- package/dist/components/list.d.ts +13 -5
- package/dist/components/list.js +21 -5
- package/dist/components/list.js.map +1 -1
- package/dist/components/marker.cjs +1 -1
- package/dist/components/marker.cjs.map +1 -1
- package/dist/components/marker.js +1 -1
- package/dist/components/marker.js.map +1 -1
- package/dist/components/message-scroller.cjs +1 -1
- package/dist/components/message-scroller.cjs.map +1 -1
- package/dist/components/message-scroller.js +1 -1
- package/dist/components/message-scroller.js.map +1 -1
- package/dist/components/page-header.d.cts +1 -1
- package/dist/components/page-header.d.ts +1 -1
- package/dist/components/pill.d.cts +1 -1
- package/dist/components/pill.d.ts +1 -1
- package/dist/components/radio.cjs +6 -2
- package/dist/components/radio.cjs.map +1 -1
- package/dist/components/radio.d.cts +4 -2
- package/dist/components/radio.d.ts +4 -2
- package/dist/components/radio.js +6 -2
- package/dist/components/radio.js.map +1 -1
- package/dist/components/rating.cjs +167 -0
- package/dist/components/rating.cjs.map +1 -0
- package/dist/components/rating.d.cts +50 -0
- package/dist/components/rating.d.ts +50 -0
- package/dist/components/rating.js +162 -0
- package/dist/components/rating.js.map +1 -0
- package/dist/components/schedule-list.cjs +1 -1
- package/dist/components/schedule-list.cjs.map +1 -1
- package/dist/components/schedule-list.js +1 -1
- package/dist/components/schedule-list.js.map +1 -1
- package/dist/components/scroll-area.cjs +9 -2
- package/dist/components/scroll-area.cjs.map +1 -1
- package/dist/components/scroll-area.d.cts +1 -1
- package/dist/components/scroll-area.d.ts +1 -1
- package/dist/components/scroll-area.js +10 -3
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/segmented-control.d.cts +1 -1
- package/dist/components/segmented-control.d.ts +1 -1
- package/dist/components/select.d.cts +1 -1
- package/dist/components/select.d.ts +1 -1
- package/dist/components/selection-item.cjs +42 -0
- package/dist/components/selection-item.cjs.map +1 -0
- package/dist/components/selection-item.d.cts +25 -0
- package/dist/components/selection-item.d.ts +25 -0
- package/dist/components/selection-item.js +39 -0
- package/dist/components/selection-item.js.map +1 -0
- package/dist/components/sheet.cjs +1 -1
- package/dist/components/sheet.js +1 -1
- package/dist/components/skeleton.cjs +1 -1
- package/dist/components/skeleton.cjs.map +1 -1
- package/dist/components/skeleton.js +1 -1
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.cjs +1 -1
- package/dist/components/slider.cjs.map +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/slider.js.map +1 -1
- package/dist/components/spinner.cjs +81 -8
- package/dist/components/spinner.cjs.map +1 -1
- package/dist/components/spinner.js +81 -8
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stat-card.cjs +1 -1
- package/dist/components/stat-card.cjs.map +1 -1
- package/dist/components/stat-card.js +1 -1
- package/dist/components/stat-card.js.map +1 -1
- package/dist/components/stepper.cjs +3 -2
- package/dist/components/stepper.cjs.map +1 -1
- package/dist/components/stepper.js +3 -2
- package/dist/components/stepper.js.map +1 -1
- package/dist/components/switch-group.cjs +32 -0
- package/dist/components/switch-group.cjs.map +1 -0
- package/dist/components/switch-group.d.cts +26 -0
- package/dist/components/switch-group.d.ts +26 -0
- package/dist/components/switch-group.js +29 -0
- package/dist/components/switch-group.js.map +1 -0
- package/dist/components/switch.d.cts +1 -1
- package/dist/components/switch.d.ts +1 -1
- package/dist/components/tabs.cjs +32 -23
- package/dist/components/tabs.cjs.map +1 -1
- package/dist/components/tabs.d.cts +5 -5
- package/dist/components/tabs.d.ts +5 -5
- package/dist/components/tabs.js +32 -23
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/textarea.d.cts +1 -1
- package/dist/components/textarea.d.ts +1 -1
- package/dist/components/theme.cjs +44 -2
- package/dist/components/theme.cjs.map +1 -1
- package/dist/components/theme.d.cts +4 -2
- package/dist/components/theme.d.ts +4 -2
- package/dist/components/theme.js +44 -2
- package/dist/components/theme.js.map +1 -1
- package/dist/components/toast.cjs +2 -2
- package/dist/components/toast.cjs.map +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle-group.d.cts +1 -1
- package/dist/components/toggle-group.d.ts +1 -1
- package/dist/components/toggle.d.cts +2 -2
- package/dist/components/toggle.d.ts +2 -2
- package/dist/lib/accent-theme.d.cts +1 -1
- package/dist/lib/accent-theme.d.ts +1 -1
- package/dist/lib/container-chrome.cjs +4 -4
- package/dist/lib/container-chrome.cjs.map +1 -1
- package/dist/lib/container-chrome.d.cts +1 -1
- package/dist/lib/container-chrome.d.ts +1 -1
- package/dist/lib/container-chrome.js +4 -4
- package/dist/lib/container-chrome.js.map +1 -1
- package/dist/lib/input-box-variants.cjs +8 -8
- package/dist/lib/input-box-variants.cjs.map +1 -1
- package/dist/lib/input-box-variants.d.cts +1 -1
- package/dist/lib/input-box-variants.d.ts +1 -1
- package/dist/lib/input-box-variants.js +8 -8
- package/dist/lib/input-box-variants.js.map +1 -1
- package/dist/lib/selection-list.cjs +17 -0
- package/dist/lib/selection-list.cjs.map +1 -0
- package/dist/lib/selection-list.d.cts +11 -0
- package/dist/lib/selection-list.d.ts +11 -0
- package/dist/lib/selection-list.js +15 -0
- package/dist/lib/selection-list.js.map +1 -0
- package/dist/lib/theme-types.cjs.map +1 -1
- package/dist/lib/theme-types.d.cts +2 -2
- package/dist/lib/theme-types.d.ts +2 -2
- package/dist/lib/theme-types.js.map +1 -1
- package/dist/lib/toggle-group-context.d.cts +2 -1
- package/dist/lib/toggle-group-context.d.ts +2 -1
- package/dist/styles/spark-default.css +12 -1
- package/dist/styles/theme.css +98 -0
- package/dist/{theme-types-Bn5E15-P.d.ts → theme-types-CKZzOmSa.d.cts} +11 -2
- package/dist/{theme-types-Bn5E15-P.d.cts → theme-types-CKZzOmSa.d.ts} +11 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.cjs","names":["AccordionPrimitive","KeyboardArrowDown"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport { KeyboardArrowDown } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards,
|
|
1
|
+
{"version":3,"file":"accordion.cjs","names":["AccordionPrimitive","KeyboardArrowDown"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport { KeyboardArrowDown } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards, layout gap × 0.5 between them;\n * - `surface` — items glued into one bordered panel with an opaque fill;\n * - `outline` — the same glued bordered panel, but no fill (transparent).\n * A `variant` prop, NOT the ambient `data-style` knob — that would cascade into\n * the panel content. Spacing + scaling still come from the ambient knobs.\n */\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = 'soft', ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n // group/accordion + data-variant drive every item/trigger's per-variant\n // chrome; soft stacks its separate cards with a gap (below).\n data-variant={variant}\n className={cn(\n 'group/accordion',\n // soft = separate cards → stack them with a layout gap × 0.5. surface/outline\n // glue their items into one bordered panel (default block, no gap).\n 'data-[variant=soft]:flex data-[variant=soft]:flex-col data-[variant=soft]:gap-[calc(var(--spark-layout-gap)*0.5)]',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n // NEUTRAL container chrome per the accordion variant (group/accordion) — mirrors\n // ListItem's group-data-[variant=X]/list: block (list.tsx); keep both in sync if\n // this pattern changes. ghost carries no chrome. Radius = rounded-lg (tracks the\n // radius knob but never goes fully round). No text underline / per-item separator\n // anymore.\n\n // soft (default): each item is its own borderless soft-tinted rounded card;\n // the root separates them with a layout gap × 0.5 (the gap IS the separator).\n 'group-data-[variant=soft]/accordion:rounded-lg group-data-[variant=soft]/accordion:bg-gray-a2 dark:group-data-[variant=soft]/accordion:bg-gray-a3',\n // surface + outline share ONE glued-panel frame: full thin border around the\n // stack (sides on all, top on each as divider/frame, bottom on the last),\n // first/last round the outer corners. surface fills it (opaque bg); outline\n // leaves it transparent.\n 'group-data-[variant=surface]/accordion:bg-gray-2',\n 'group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-lg group-data-[variant=surface]/accordion:last:rounded-b-lg group-data-[variant=surface]/accordion:last:border-b',\n 'group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-lg group-data-[variant=outline]/accordion:last:rounded-b-lg group-data-[variant=outline]/accordion:last:border-b',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n>\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex rounded-[inherit]\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // WCAG 2.5.5: min 44px touch target — a HARD floor (min-h-[2.75rem], not\n // min-h-11, which scales below 44px under dense/scaled knobs). py/text still\n // scale with the spacing + scaling knobs, growing the target past 44px.\n // No text underline (was hover:underline).\n 'flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12',\n // focus ring: rounded-[inherit] (relayed through Header, above) so it matches\n // the item's own corner — sits flush against it with zero inset, same idiom as\n // ListItem's full-bleed row (list.tsx).\n 'rounded-[inherit] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50',\n // horizontal padding sits INSIDE the chrome (soft/surface/outline); ghost\n // keeps the label flush (\"just plain text and spacing\").\n 'group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n // chevron (last child) flips when open\n '[&[data-panel-open]>:last-child]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <KeyboardArrowDown className=\"shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\ntype AccordionContentProps = React.ComponentProps<\n typeof AccordionPrimitive.Panel\n>\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n // Base UI sets --accordion-panel-height + starting/ending styles on the\n // panel; the height transition replaces the radix keyframe animation.\n className=\"h-(--accordion-panel-height) overflow-hidden text-sm text-gray-11 transition-[height] duration-200 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none\"\n {...props}\n >\n {/* padding aligns with the trigger: flush for ghost, inside the chrome otherwise */}\n <div\n className={cn(\n 'pb-4 group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\nexport type { AccordionProps, AccordionVariant }\n"],"mappings":";;;;;;;;;;AAoBA,SAAS,UAAU,EAAE,WAAW,UAAU,QAAQ,GAAG,SAAyB;CAC5E,OACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,MAApB;EACE,aAAU;EAGV,gBAAc;EACd,YAAA,GAAA,GAAA,IACE,mBAGA,qHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAIA,SAAS,cAAc,EAAE,WAAW,GAAG,SAA6B;CAClE,OACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,MAApB;EACE,aAAU;EACV,YAAA,GAAA,GAAA,IASE,qJAKA,oDACA,iUACA,iUACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAMA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;CACxB,OACE,iBAAA,GAAA,kBAAA,KAACA,yBAAAA,UAAmB,QAApB;EAA2B,WAAU;YACnC,iBAAA,GAAA,kBAAA,MAACA,yBAAAA,UAAmB,SAApB;GACE,aAAU;GACV,YAAA,GAAA,GAAA,IAKE,yHAIA,mGACA,oDAGA,oIAEA,+CACA,SACF;GACA,GAAI;aApBN,CAsBG,UACD,iBAAA,GAAA,kBAAA,KAACC,oBAAAA,mBAAD,EAAmB,WAAU,wFAAyF,CAAA,CAC5F;;CACH,CAAA;AAE/B;AAMA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;CACxB,OACE,iBAAA,GAAA,kBAAA,KAACD,yBAAAA,UAAmB,OAApB;EACE,aAAU;EAGV,WAAU;EACV,GAAI;YAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,YAAA,GAAA,GAAA,IACE,yIACA,SACF;GAEC;EACE,CAAA;CACmB,CAAA;AAE9B"}
|
|
@@ -9,7 +9,7 @@ type AccordionProps = React$1.ComponentProps<typeof Accordion$1.Root> & {
|
|
|
9
9
|
/**
|
|
10
10
|
* Container chrome (neutral):
|
|
11
11
|
* - `ghost` — no border/fill, just the trigger + spacing;
|
|
12
|
-
* - `soft` (default) — separate soft-tinted rounded cards,
|
|
12
|
+
* - `soft` (default) — separate soft-tinted rounded cards, layout gap × 0.5 between them;
|
|
13
13
|
* - `surface` — items glued into one bordered panel with an opaque fill;
|
|
14
14
|
* - `outline` — the same glued bordered panel, but no fill (transparent).
|
|
15
15
|
* A `variant` prop, NOT the ambient `data-style` knob — that would cascade into
|
|
@@ -9,7 +9,7 @@ type AccordionProps = React$1.ComponentProps<typeof Accordion$1.Root> & {
|
|
|
9
9
|
/**
|
|
10
10
|
* Container chrome (neutral):
|
|
11
11
|
* - `ghost` — no border/fill, just the trigger + spacing;
|
|
12
|
-
* - `soft` (default) — separate soft-tinted rounded cards,
|
|
12
|
+
* - `soft` (default) — separate soft-tinted rounded cards, layout gap × 0.5 between them;
|
|
13
13
|
* - `surface` — items glued into one bordered panel with an opaque fill;
|
|
14
14
|
* - `outline` — the same glued bordered panel, but no fill (transparent).
|
|
15
15
|
* A `variant` prop, NOT the ambient `data-style` knob — that would cascade into
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","names":["AccordionPrimitive"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport { KeyboardArrowDown } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards,
|
|
1
|
+
{"version":3,"file":"accordion.js","names":["AccordionPrimitive"],"sources":["../../src/components/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport { KeyboardArrowDown } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype AccordionVariant = 'ghost' | 'soft' | 'surface' | 'outline'\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n /**\n * Container chrome (neutral):\n * - `ghost` — no border/fill, just the trigger + spacing;\n * - `soft` (default) — separate soft-tinted rounded cards, layout gap × 0.5 between them;\n * - `surface` — items glued into one bordered panel with an opaque fill;\n * - `outline` — the same glued bordered panel, but no fill (transparent).\n * A `variant` prop, NOT the ambient `data-style` knob — that would cascade into\n * the panel content. Spacing + scaling still come from the ambient knobs.\n */\n variant?: AccordionVariant\n}\n\nfunction Accordion({ className, variant = 'soft', ...props }: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n // group/accordion + data-variant drive every item/trigger's per-variant\n // chrome; soft stacks its separate cards with a gap (below).\n data-variant={variant}\n className={cn(\n 'group/accordion',\n // soft = separate cards → stack them with a layout gap × 0.5. surface/outline\n // glue their items into one bordered panel (default block, no gap).\n 'data-[variant=soft]:flex data-[variant=soft]:flex-col data-[variant=soft]:gap-[calc(var(--spark-layout-gap)*0.5)]',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\n // NEUTRAL container chrome per the accordion variant (group/accordion) — mirrors\n // ListItem's group-data-[variant=X]/list: block (list.tsx); keep both in sync if\n // this pattern changes. ghost carries no chrome. Radius = rounded-lg (tracks the\n // radius knob but never goes fully round). No text underline / per-item separator\n // anymore.\n\n // soft (default): each item is its own borderless soft-tinted rounded card;\n // the root separates them with a layout gap × 0.5 (the gap IS the separator).\n 'group-data-[variant=soft]/accordion:rounded-lg group-data-[variant=soft]/accordion:bg-gray-a2 dark:group-data-[variant=soft]/accordion:bg-gray-a3',\n // surface + outline share ONE glued-panel frame: full thin border around the\n // stack (sides on all, top on each as divider/frame, bottom on the last),\n // first/last round the outer corners. surface fills it (opaque bg); outline\n // leaves it transparent.\n 'group-data-[variant=surface]/accordion:bg-gray-2',\n 'group-data-[variant=surface]/accordion:border-x group-data-[variant=surface]/accordion:border-t group-data-[variant=surface]/accordion:border-gray-a6 group-data-[variant=surface]/accordion:first:rounded-t-lg group-data-[variant=surface]/accordion:last:rounded-b-lg group-data-[variant=surface]/accordion:last:border-b',\n 'group-data-[variant=outline]/accordion:border-x group-data-[variant=outline]/accordion:border-t group-data-[variant=outline]/accordion:border-gray-a6 group-data-[variant=outline]/accordion:first:rounded-t-lg group-data-[variant=outline]/accordion:last:rounded-b-lg group-data-[variant=outline]/accordion:last:border-b',\n className,\n )}\n {...props}\n />\n )\n}\n\ntype AccordionTriggerProps = React.ComponentProps<\n typeof AccordionPrimitive.Trigger\n>\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionTriggerProps) {\n return (\n <AccordionPrimitive.Header className=\"flex rounded-[inherit]\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n // WCAG 2.5.5: min 44px touch target — a HARD floor (min-h-[2.75rem], not\n // min-h-11, which scales below 44px under dense/scaled knobs). py/text still\n // scale with the spacing + scaling knobs, growing the target past 44px.\n // No text underline (was hover:underline).\n 'flex min-h-[2.75rem] flex-1 cursor-pointer items-center justify-between gap-4 py-3 text-left font-medium text-gray-12',\n // focus ring: rounded-[inherit] (relayed through Header, above) so it matches\n // the item's own corner — sits flush against it with zero inset, same idiom as\n // ListItem's full-bleed row (list.tsx).\n 'rounded-[inherit] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50',\n // horizontal padding sits INSIDE the chrome (soft/surface/outline); ghost\n // keeps the label flush (\"just plain text and spacing\").\n 'group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n // chevron (last child) flips when open\n '[&[data-panel-open]>:last-child]:rotate-180',\n className,\n )}\n {...props}\n >\n {children}\n <KeyboardArrowDown className=\"shrink-0 text-gray-11 transition-transform duration-200 motion-reduce:transition-none\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\ntype AccordionContentProps = React.ComponentProps<\n typeof AccordionPrimitive.Panel\n>\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionContentProps) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n // Base UI sets --accordion-panel-height + starting/ending styles on the\n // panel; the height transition replaces the radix keyframe animation.\n className=\"h-(--accordion-panel-height) overflow-hidden text-sm text-gray-11 transition-[height] duration-200 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none\"\n {...props}\n >\n {/* padding aligns with the trigger: flush for ghost, inside the chrome otherwise */}\n <div\n className={cn(\n 'pb-4 group-data-[variant=outline]/accordion:px-4 group-data-[variant=soft]/accordion:px-4 group-data-[variant=surface]/accordion:px-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionContent, AccordionItem, AccordionTrigger }\nexport type { AccordionProps, AccordionVariant }\n"],"mappings":";;;;;;;AAoBA,SAAS,UAAU,EAAE,WAAW,UAAU,QAAQ,GAAG,SAAyB;CAC5E,OACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EAGV,gBAAc;EACd,WAAW,GACT,mBAGA,qHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAIA,SAAS,cAAc,EAAE,WAAW,GAAG,SAA6B;CAClE,OACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAST,qJAKA,oDACA,iUACA,iUACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAMA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;CACxB,OACE,oBAACA,YAAmB,QAApB;EAA2B,WAAU;YACnC,qBAACA,YAAmB,SAApB;GACE,aAAU;GACV,WAAW,GAKT,yHAIA,mGACA,oDAGA,oIAEA,+CACA,SACF;GACA,GAAI;aApBN,CAsBG,UACD,oBAAC,mBAAD,EAAmB,WAAU,wFAAyF,CAAA,CAC5F;;CACH,CAAA;AAE/B;AAMA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACqB;CACxB,OACE,oBAACA,YAAmB,OAApB;EACE,aAAU;EAGV,WAAU;EACV,GAAI;YAGJ,oBAAC,OAAD;GACE,WAAW,GACT,yIACA,SACF;GAEC;EACE,CAAA;CACmB,CAAA;AAE9B"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const require_chunk = require("../chunk-DY84GLCh.cjs");
|
|
4
|
-
const require_components_button = require("./button.cjs");
|
|
5
4
|
const require_components_theme = require("./theme.cjs");
|
|
5
|
+
const require_components_button = require("./button.cjs");
|
|
6
6
|
let react = require("react");
|
|
7
7
|
react = require_chunk.__toESM(react);
|
|
8
8
|
let _epilot_spark_icons = require("@epilot/spark-icons");
|
|
@@ -45,7 +45,7 @@ function AlertDialogContent({ className, size = "default", ...props }) {
|
|
|
45
45
|
function AlertDialogHeader({ className, ...props }) {
|
|
46
46
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
47
47
|
"data-slot": "alert-dialog-header",
|
|
48
|
-
className: (0, cn.cn)("grid grid-rows-[auto_1fr] place-items-center gap-
|
|
48
|
+
className: (0, cn.cn)("grid grid-rows-[auto_1fr] place-items-center gap-y-2 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
49
49
|
...props
|
|
50
50
|
});
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-dialog.cjs","names":["AlertDialogPrimitive","PortalTheme","Button","buttonVariants","Close"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\nimport { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\nimport { buttonVariants } from './button'\nimport { PortalTheme } from './theme'\n\nfunction AlertDialog(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Root>,\n) {\n return <AlertDialogPrimitive.Root {...props} />\n}\n\nfunction AlertDialogTrigger(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>,\n) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n children,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props}>\n <PortalTheme>{children}</PortalTheme>\n </AlertDialogPrimitive.Portal>\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Backdrop>) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'fixed top-(--spark-viewport-top,0) right-0 left-0 z-50 h-(--spark-viewport-height,100%) bg-(--color-overlay) transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none',\n className,\n )}\n data-overlay=\"true\"\n {...props}\n />\n )\n}\n\ninterface AlertDialogContentProps extends React.ComponentProps<\n typeof AlertDialogPrimitive.Popup\n> {\n size?: 'default' | 'sm'\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: AlertDialogContentProps) {\n return (\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n 'group/alert-dialog-content fixed top-(--spark-viewport-center-y,50%) left-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-6 rounded-lg bg-gray-2 p-4 text-gray shadow-lg transition-[top,opacity,translate,scale] duration-200 data-[size=default]:max-w-lg data-[size=sm]:max-w-64 motion-reduce:transition-none data-[size=default]:sm:max-w-lg',\n // enter/exit: fade + zoom + a slight upward offset (was animate-in/out)\n 'data-starting-style:translate-y-[-52%] data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-ending-style:translate-y-[-52%] data-ending-style:scale-95 data-ending-style:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n 'inline-flex size-4 h-7 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*=size-])]:size-4',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n 'text-lg font-bold text-gray sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('text-sm text-balance text-gray-light', className)}\n {...props}\n />\n )\n}\n\ninterface AlertDialogActionProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// Base UI has no Action primitive; the confirm button composes Close (radix\n// Action also closed on click) — run the action in onClick. A prop-less Button\n// is the primary look (solid accent), so the confirm just forwards style/color.\nfunction AlertDialogAction({\n className,\n size = 'default',\n styleVariant,\n color,\n ...props\n}: AlertDialogActionProps) {\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={styleVariant}\n color={color}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n className={className}\n {...props}\n />\n }\n />\n )\n}\n\ninterface AlertDialogCancelProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// No children = the ready-made corner X (label is the consumer's, via aria-label);\n// with children it renders as a Button (default surface/neutral, the old secondary\n// look); with a render prop it stays the bare primitive (the consumer supplies the button)\nfunction AlertDialogCancel({\n className,\n size = 'default',\n styleVariant,\n color,\n children,\n ...props\n}: AlertDialogCancelProps) {\n if (children) {\n // Default to the surface/neutral (secondary) look unless the caller pins a\n // style/color of its own.\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={hasLook ? styleVariant : 'surface'}\n color={hasLook ? color : 'neutral'}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n >\n {children}\n </AlertDialogPrimitive.Close>\n }\n />\n )\n }\n\n if (props.render) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n />\n )\n }\n\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-2.5 right-2 rounded-full',\n className,\n )}\n {...props}\n >\n <Close className=\"[--spark-icon-size:calc(20px*var(--spark-scaling,1))]\" />\n </AlertDialogPrimitive.Close>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\nexport type { AlertDialogContentProps }\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alert-dialog.cjs","names":["AlertDialogPrimitive","PortalTheme","Button","buttonVariants","Close"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\nimport { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\nimport { buttonVariants } from './button'\nimport { PortalTheme } from './theme'\n\nfunction AlertDialog(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Root>,\n) {\n return <AlertDialogPrimitive.Root {...props} />\n}\n\nfunction AlertDialogTrigger(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>,\n) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n children,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props}>\n <PortalTheme>{children}</PortalTheme>\n </AlertDialogPrimitive.Portal>\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Backdrop>) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'fixed top-(--spark-viewport-top,0) right-0 left-0 z-50 h-(--spark-viewport-height,100%) bg-(--color-overlay) transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none',\n className,\n )}\n data-overlay=\"true\"\n {...props}\n />\n )\n}\n\ninterface AlertDialogContentProps extends React.ComponentProps<\n typeof AlertDialogPrimitive.Popup\n> {\n size?: 'default' | 'sm'\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: AlertDialogContentProps) {\n return (\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n 'group/alert-dialog-content fixed top-(--spark-viewport-center-y,50%) left-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-6 rounded-lg bg-gray-2 p-4 text-gray shadow-lg transition-[top,opacity,translate,scale] duration-200 data-[size=default]:max-w-lg data-[size=sm]:max-w-64 motion-reduce:transition-none data-[size=default]:sm:max-w-lg',\n // enter/exit: fade + zoom + a slight upward offset (was animate-in/out)\n 'data-starting-style:translate-y-[-52%] data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-ending-style:translate-y-[-52%] data-ending-style:scale-95 data-ending-style:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-y-2 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n 'inline-flex size-4 h-7 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*=size-])]:size-4',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n 'text-lg font-bold text-gray sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('text-sm text-balance text-gray-light', className)}\n {...props}\n />\n )\n}\n\ninterface AlertDialogActionProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// Base UI has no Action primitive; the confirm button composes Close (radix\n// Action also closed on click) — run the action in onClick. A prop-less Button\n// is the primary look (solid accent), so the confirm just forwards style/color.\nfunction AlertDialogAction({\n className,\n size = 'default',\n styleVariant,\n color,\n ...props\n}: AlertDialogActionProps) {\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={styleVariant}\n color={color}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n className={className}\n {...props}\n />\n }\n />\n )\n}\n\ninterface AlertDialogCancelProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// No children = the ready-made corner X (label is the consumer's, via aria-label);\n// with children it renders as a Button (default surface/neutral, the old secondary\n// look); with a render prop it stays the bare primitive (the consumer supplies the button)\nfunction AlertDialogCancel({\n className,\n size = 'default',\n styleVariant,\n color,\n children,\n ...props\n}: AlertDialogCancelProps) {\n if (children) {\n // Default to the surface/neutral (secondary) look unless the caller pins a\n // style/color of its own.\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={hasLook ? styleVariant : 'surface'}\n color={hasLook ? color : 'neutral'}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n >\n {children}\n </AlertDialogPrimitive.Close>\n }\n />\n )\n }\n\n if (props.render) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n />\n )\n }\n\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-2.5 right-2 rounded-full',\n className,\n )}\n {...props}\n >\n <Close className=\"[--spark-icon-size:calc(20px*var(--spark-scaling,1))]\" />\n </AlertDialogPrimitive.Close>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\nexport type { AlertDialogContentProps }\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../utils/cn.js";
|
|
3
|
-
import { Button, buttonVariants } from "./button.js";
|
|
4
3
|
import { PortalTheme } from "./theme.js";
|
|
4
|
+
import { Button, buttonVariants } from "./button.js";
|
|
5
5
|
import "react";
|
|
6
6
|
import { Close } from "@epilot/spark-icons";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -42,7 +42,7 @@ function AlertDialogContent({ className, size = "default", ...props }) {
|
|
|
42
42
|
function AlertDialogHeader({ className, ...props }) {
|
|
43
43
|
return /* @__PURE__ */ jsx("div", {
|
|
44
44
|
"data-slot": "alert-dialog-header",
|
|
45
|
-
className: cn("grid grid-rows-[auto_1fr] place-items-center gap-
|
|
45
|
+
className: cn("grid grid-rows-[auto_1fr] place-items-center gap-y-2 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
46
46
|
...props
|
|
47
47
|
});
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-dialog.js","names":["AlertDialogPrimitive"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\nimport { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\nimport { buttonVariants } from './button'\nimport { PortalTheme } from './theme'\n\nfunction AlertDialog(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Root>,\n) {\n return <AlertDialogPrimitive.Root {...props} />\n}\n\nfunction AlertDialogTrigger(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>,\n) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n children,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props}>\n <PortalTheme>{children}</PortalTheme>\n </AlertDialogPrimitive.Portal>\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Backdrop>) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'fixed top-(--spark-viewport-top,0) right-0 left-0 z-50 h-(--spark-viewport-height,100%) bg-(--color-overlay) transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none',\n className,\n )}\n data-overlay=\"true\"\n {...props}\n />\n )\n}\n\ninterface AlertDialogContentProps extends React.ComponentProps<\n typeof AlertDialogPrimitive.Popup\n> {\n size?: 'default' | 'sm'\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: AlertDialogContentProps) {\n return (\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n 'group/alert-dialog-content fixed top-(--spark-viewport-center-y,50%) left-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-6 rounded-lg bg-gray-2 p-4 text-gray shadow-lg transition-[top,opacity,translate,scale] duration-200 data-[size=default]:max-w-lg data-[size=sm]:max-w-64 motion-reduce:transition-none data-[size=default]:sm:max-w-lg',\n // enter/exit: fade + zoom + a slight upward offset (was animate-in/out)\n 'data-starting-style:translate-y-[-52%] data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-ending-style:translate-y-[-52%] data-ending-style:scale-95 data-ending-style:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n 'inline-flex size-4 h-7 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*=size-])]:size-4',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n 'text-lg font-bold text-gray sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('text-sm text-balance text-gray-light', className)}\n {...props}\n />\n )\n}\n\ninterface AlertDialogActionProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// Base UI has no Action primitive; the confirm button composes Close (radix\n// Action also closed on click) — run the action in onClick. A prop-less Button\n// is the primary look (solid accent), so the confirm just forwards style/color.\nfunction AlertDialogAction({\n className,\n size = 'default',\n styleVariant,\n color,\n ...props\n}: AlertDialogActionProps) {\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={styleVariant}\n color={color}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n className={className}\n {...props}\n />\n }\n />\n )\n}\n\ninterface AlertDialogCancelProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// No children = the ready-made corner X (label is the consumer's, via aria-label);\n// with children it renders as a Button (default surface/neutral, the old secondary\n// look); with a render prop it stays the bare primitive (the consumer supplies the button)\nfunction AlertDialogCancel({\n className,\n size = 'default',\n styleVariant,\n color,\n children,\n ...props\n}: AlertDialogCancelProps) {\n if (children) {\n // Default to the surface/neutral (secondary) look unless the caller pins a\n // style/color of its own.\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={hasLook ? styleVariant : 'surface'}\n color={hasLook ? color : 'neutral'}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n >\n {children}\n </AlertDialogPrimitive.Close>\n }\n />\n )\n }\n\n if (props.render) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n />\n )\n }\n\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-2.5 right-2 rounded-full',\n className,\n )}\n {...props}\n >\n <Close className=\"[--spark-icon-size:calc(20px*var(--spark-scaling,1))]\" />\n </AlertDialogPrimitive.Close>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\nexport type { AlertDialogContentProps }\n"],"mappings":";;;;;;;;;AAQA,SAAS,YACP,OACA;CACA,OAAO,oBAACA,cAAqB,MAAtB,EAA2B,GAAI,MAAQ,CAAA;AAChD;AAEA,SAAS,mBACP,OACA;CACA,OACE,oBAACA,cAAqB,SAAtB;EAA8B,aAAU;EAAuB,GAAI;CAAQ,CAAA;AAE/E;AAEA,SAAS,kBAAkB,EACzB,UACA,GAAG,SACwD;CAC3D,OACE,oBAACA,cAAqB,QAAtB;EAA6B,aAAU;EAAsB,GAAI;YAC/D,oBAAC,aAAD,EAAc,SAAsB,CAAA;CACT,CAAA;AAEjC;AAEA,SAAS,mBAAmB,EAC1B,WACA,GAAG,SAC0D;CAC7D,OACE,oBAACA,cAAqB,UAAtB;EACE,aAAU;EACV,WAAW,GACT,wOACA,SACF;EACA,gBAAa;EACb,GAAI;CACL,CAAA;AAEL;AAQA,SAAS,mBAAmB,EAC1B,WACA,OAAO,WACP,GAAG,SACuB;CAC1B,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT,sWAEA,qGACA,+FACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EACzB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,oZACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EACzB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,+JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,iKACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACV,WAAW,GACT,2JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;CAChE,OACE,oBAACA,cAAqB,aAAtB;EACE,aAAU;EACV,WAAW,GAAG,wCAAwC,SAAS;EAC/D,GAAI;CACL,CAAA;AAEL;AAUA,SAAS,kBAAkB,EACzB,WACA,OAAO,WACP,cACA,OACA,GAAG,SACsB;CACzB,OACE,oBAAC,QAAD;EACE,cAAA;EACM;EACQ;EACP;EACP,QACE,oBAACA,cAAqB,OAAtB;GACE,aAAU;GACC;GACX,GAAI;EACL,CAAA;CAEJ,CAAA;AAEL;AAUA,SAAS,kBAAkB,EACzB,WACA,OAAO,WACP,cACA,OACA,UACA,GAAG,SACsB;CACzB,IAAI,UAAU;EAGZ,MAAM,UAAU,iBAAiB,KAAA,KAAa,UAAU,KAAA;EACxD,OACE,oBAAC,QAAD;GACE,cAAA;GACM;GACN,cAAc,UAAU,eAAe;GACvC,OAAO,UAAU,QAAQ;GACzB,QACE,oBAACA,cAAqB,OAAtB;IACE,aAAU;IACC;IACX,GAAI;IAEH;GACyB,CAAA;EAE/B,CAAA;CAEL;CAEA,IAAI,MAAM,QACR,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACC;EACX,GAAI;CACL,CAAA;CAIL,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACV,WAAW,GACT,eAAe;GAAE,MAAM;GAAQ,SAAS;EAAW,CAAC,GACpD,yCACA,SACF;EACA,GAAI;YAEJ,oBAAC,OAAD,EAAO,WAAU,wDAAyD,CAAA;CAChD,CAAA;AAEhC"}
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","names":["AlertDialogPrimitive"],"sources":["../../src/components/alert-dialog.tsx"],"sourcesContent":["import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\nimport { Close } from '@epilot/spark-icons'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\nimport { buttonVariants } from './button'\nimport { PortalTheme } from './theme'\n\nfunction AlertDialog(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Root>,\n) {\n return <AlertDialogPrimitive.Root {...props} />\n}\n\nfunction AlertDialogTrigger(\n props: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>,\n) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({\n children,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props}>\n <PortalTheme>{children}</PortalTheme>\n </AlertDialogPrimitive.Portal>\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Backdrop>) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'fixed top-(--spark-viewport-top,0) right-0 left-0 z-50 h-(--spark-viewport-height,100%) bg-(--color-overlay) transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 motion-reduce:transition-none',\n className,\n )}\n data-overlay=\"true\"\n {...props}\n />\n )\n}\n\ninterface AlertDialogContentProps extends React.ComponentProps<\n typeof AlertDialogPrimitive.Popup\n> {\n size?: 'default' | 'sm'\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: AlertDialogContentProps) {\n return (\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n 'group/alert-dialog-content fixed top-(--spark-viewport-center-y,50%) left-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-6 rounded-lg bg-gray-2 p-4 text-gray shadow-lg transition-[top,opacity,translate,scale] duration-200 data-[size=default]:max-w-lg data-[size=sm]:max-w-64 motion-reduce:transition-none data-[size=default]:sm:max-w-lg',\n // enter/exit: fade + zoom + a slight upward offset (was animate-in/out)\n 'data-starting-style:translate-y-[-52%] data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-ending-style:translate-y-[-52%] data-ending-style:scale-95 data-ending-style:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-y-2 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n 'inline-flex size-4 h-7 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*=size-])]:size-4',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n 'text-lg font-bold text-gray sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('text-sm text-balance text-gray-light', className)}\n {...props}\n />\n )\n}\n\ninterface AlertDialogActionProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// Base UI has no Action primitive; the confirm button composes Close (radix\n// Action also closed on click) — run the action in onClick. A prop-less Button\n// is the primary look (solid accent), so the confirm just forwards style/color.\nfunction AlertDialogAction({\n className,\n size = 'default',\n styleVariant,\n color,\n ...props\n}: AlertDialogActionProps) {\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={styleVariant}\n color={color}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n className={className}\n {...props}\n />\n }\n />\n )\n}\n\ninterface AlertDialogCancelProps\n extends\n React.ComponentProps<typeof AlertDialogPrimitive.Close>,\n Pick<ButtonProps, 'size' | 'styleVariant' | 'color'> {}\n\n// No children = the ready-made corner X (label is the consumer's, via aria-label);\n// with children it renders as a Button (default surface/neutral, the old secondary\n// look); with a render prop it stays the bare primitive (the consumer supplies the button)\nfunction AlertDialogCancel({\n className,\n size = 'default',\n styleVariant,\n color,\n children,\n ...props\n}: AlertDialogCancelProps) {\n if (children) {\n // Default to the surface/neutral (secondary) look unless the caller pins a\n // style/color of its own.\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <Button\n nativeButton\n size={size}\n styleVariant={hasLook ? styleVariant : 'surface'}\n color={hasLook ? color : 'neutral'}\n render={\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n >\n {children}\n </AlertDialogPrimitive.Close>\n }\n />\n )\n }\n\n if (props.render) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={className}\n {...props}\n />\n )\n }\n\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-2.5 right-2 rounded-full',\n className,\n )}\n {...props}\n >\n <Close className=\"[--spark-icon-size:calc(20px*var(--spark-scaling,1))]\" />\n </AlertDialogPrimitive.Close>\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\nexport type { AlertDialogContentProps }\n"],"mappings":";;;;;;;;;AAQA,SAAS,YACP,OACA;CACA,OAAO,oBAACA,cAAqB,MAAtB,EAA2B,GAAI,MAAQ,CAAA;AAChD;AAEA,SAAS,mBACP,OACA;CACA,OACE,oBAACA,cAAqB,SAAtB;EAA8B,aAAU;EAAuB,GAAI;CAAQ,CAAA;AAE/E;AAEA,SAAS,kBAAkB,EACzB,UACA,GAAG,SACwD;CAC3D,OACE,oBAACA,cAAqB,QAAtB;EAA6B,aAAU;EAAsB,GAAI;YAC/D,oBAAC,aAAD,EAAc,SAAsB,CAAA;CACT,CAAA;AAEjC;AAEA,SAAS,mBAAmB,EAC1B,WACA,GAAG,SAC0D;CAC7D,OACE,oBAACA,cAAqB,UAAtB;EACE,aAAU;EACV,WAAW,GACT,wOACA,SACF;EACA,gBAAa;EACb,GAAI;CACL,CAAA;AAEL;AAQA,SAAS,mBAAmB,EAC1B,WACA,OAAO,WACP,GAAG,SACuB;CAC1B,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT,sWAEA,qGACA,+FACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EACzB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,sZACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EACzB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,+JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,GAAG,SAC2B;CAC9B,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,iKACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACV,WAAW,GACT,2JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;CAChE,OACE,oBAACA,cAAqB,aAAtB;EACE,aAAU;EACV,WAAW,GAAG,wCAAwC,SAAS;EAC/D,GAAI;CACL,CAAA;AAEL;AAUA,SAAS,kBAAkB,EACzB,WACA,OAAO,WACP,cACA,OACA,GAAG,SACsB;CACzB,OACE,oBAAC,QAAD;EACE,cAAA;EACM;EACQ;EACP;EACP,QACE,oBAACA,cAAqB,OAAtB;GACE,aAAU;GACC;GACX,GAAI;EACL,CAAA;CAEJ,CAAA;AAEL;AAUA,SAAS,kBAAkB,EACzB,WACA,OAAO,WACP,cACA,OACA,UACA,GAAG,SACsB;CACzB,IAAI,UAAU;EAGZ,MAAM,UAAU,iBAAiB,KAAA,KAAa,UAAU,KAAA;EACxD,OACE,oBAAC,QAAD;GACE,cAAA;GACM;GACN,cAAc,UAAU,eAAe;GACvC,OAAO,UAAU,QAAQ;GACzB,QACE,oBAACA,cAAqB,OAAtB;IACE,aAAU;IACC;IACX,GAAI;IAEH;GACyB,CAAA;EAE/B,CAAA;CAEL;CAEA,IAAI,MAAM,QACR,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACC;EACX,GAAI;CACL,CAAA;CAIL,OACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACV,WAAW,GACT,eAAe;GAAE,MAAM;GAAQ,SAAS;EAAW,CAAC,GACpD,yCACA,SACF;EACA,GAAI;YAEJ,oBAAC,OAAD,EAAO,WAAU,wDAAyD,CAAA;CAChD,CAAA;AAEhC"}
|
|
@@ -20,7 +20,7 @@ declare function Attachment({
|
|
|
20
20
|
state?: 'idle' | 'uploading' | 'processing' | 'error' | 'done';
|
|
21
21
|
}): import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
declare const attachmentMediaVariants: (props?: ({
|
|
23
|
-
variant?: "
|
|
23
|
+
variant?: "icon" | "image" | null | undefined;
|
|
24
24
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
25
25
|
declare function AttachmentMedia({
|
|
26
26
|
className,
|
|
@@ -20,7 +20,7 @@ declare function Attachment({
|
|
|
20
20
|
state?: 'idle' | 'uploading' | 'processing' | 'error' | 'done';
|
|
21
21
|
}): import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
declare const attachmentMediaVariants: (props?: ({
|
|
23
|
-
variant?: "
|
|
23
|
+
variant?: "icon" | "image" | null | undefined;
|
|
24
24
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
25
25
|
declare function AttachmentMedia({
|
|
26
26
|
className,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { g as SparkStyle } from "../theme-types-CKZzOmSa.cjs";
|
|
4
4
|
import { SparkAccentColor } from "../lib/accent-colors.cjs";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { g as SparkStyle } from "../theme-types-CKZzOmSa.js";
|
|
4
4
|
import { SparkAccentColor } from "../lib/accent-colors.js";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
|
|
@@ -5,14 +5,22 @@ const require_lib_accent_colors = require("../lib/accent-colors.cjs");
|
|
|
5
5
|
let react = require("react");
|
|
6
6
|
react = require_chunk.__toESM(react);
|
|
7
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
|
+
let class_variance_authority = require("class-variance-authority");
|
|
8
9
|
let cn = require("cn");
|
|
9
10
|
//#region src/components/badge.tsx
|
|
10
|
-
const
|
|
11
|
+
const badgeVariants = (0, class_variance_authority.cva)("inline-flex min-w-5 items-center justify-center gap-1 rounded-md text-center font-normal tabular-nums", {
|
|
12
|
+
variants: { size: {
|
|
13
|
+
default: "h-5 px-1.5 text-xs [--spark-icon-size:0.75rem]",
|
|
14
|
+
medium: "h-6 px-2 text-sm [--spark-icon-size:0.875rem]"
|
|
15
|
+
} },
|
|
16
|
+
defaultVariants: { size: "default" }
|
|
17
|
+
});
|
|
18
|
+
const Badge = react.forwardRef(({ className, children, styleVariant, color, size, ...props }, ref) => {
|
|
11
19
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
12
20
|
"data-slot": "badge",
|
|
13
21
|
"data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "soft" : void 0,
|
|
14
22
|
"data-accent-color": color ? require_lib_accent_colors.accentByColor[color] : void 0,
|
|
15
|
-
className: (0, cn.cn)(
|
|
23
|
+
className: (0, cn.cn)(badgeVariants({ size }), "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))", className),
|
|
16
24
|
ref,
|
|
17
25
|
...props,
|
|
18
26
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.cjs","names":["React","accentByColor"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n/** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */\nexport type SparkBadgeColor =\n | 'primary'\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'danger'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n
|
|
1
|
+
{"version":3,"file":"badge.cjs","names":["React","accentByColor"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n/** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */\nexport type SparkBadgeColor =\n | 'primary'\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'danger'\n\nconst badgeVariants = cva(\n 'inline-flex min-w-5 items-center justify-center gap-1 rounded-md text-center font-normal tabular-nums',\n {\n variants: {\n size: {\n default: 'h-5 px-1.5 text-xs [--spark-icon-size:0.75rem]',\n medium: 'h-6 px-2 text-sm [--spark-icon-size:0.875rem]',\n },\n },\n defaultVariants: { size: 'default' },\n },\n)\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n size?: 'default' | 'medium'\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, size, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n badgeVariants({ size }),\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;;;;;;AAgBA,MAAM,iBAAA,GAAA,yBAAA,KACJ,yGACA;CACE,UAAU,EACR,MAAM;EACJ,SAAS;EACT,QAAQ;CACV,EACF;CACA,iBAAiB,EAAE,MAAM,UAAU;AACrC,CACF;AASA,MAAM,QAAQA,MAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,MAAM,GAAG,SAAS,QAAQ;CAErE,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQC,0BAAAA,cAAc,SAAS,KAAA;EAClD,YAAA,GAAA,GAAA,IACE,cAAc,EAAE,KAAK,CAAC,GACtB,4FACA,4GACA,SACF;EACK;EACL,GAAI;EAEH;CACG,CAAA;AAEV,CACF;AAEA,MAAM,cAAc"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { g as SparkStyle } from "../theme-types-CKZzOmSa.cjs";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
5
|
|
|
6
6
|
//#region src/components/badge.d.ts
|
|
@@ -9,6 +9,7 @@ type SparkBadgeColor = 'primary' | 'accent' | 'neutral' | 'success' | 'warning'
|
|
|
9
9
|
interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
10
10
|
styleVariant?: SparkStyle;
|
|
11
11
|
color?: SparkBadgeColor;
|
|
12
|
+
size?: 'default' | 'medium';
|
|
12
13
|
children?: React$1.ReactNode;
|
|
13
14
|
}
|
|
14
15
|
declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { g as SparkStyle } from "../theme-types-CKZzOmSa.js";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
5
|
|
|
6
6
|
//#region src/components/badge.d.ts
|
|
@@ -9,6 +9,7 @@ type SparkBadgeColor = 'primary' | 'accent' | 'neutral' | 'success' | 'warning'
|
|
|
9
9
|
interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
10
10
|
styleVariant?: SparkStyle;
|
|
11
11
|
color?: SparkBadgeColor;
|
|
12
|
+
size?: 'default' | 'medium';
|
|
12
13
|
children?: React$1.ReactNode;
|
|
13
14
|
}
|
|
14
15
|
declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
package/dist/components/badge.js
CHANGED
|
@@ -3,13 +3,21 @@ import { cn } from "../utils/cn.js";
|
|
|
3
3
|
import { accentByColor } from "../lib/accent-colors.js";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
6
7
|
//#region src/components/badge.tsx
|
|
7
|
-
const
|
|
8
|
+
const badgeVariants = cva("inline-flex min-w-5 items-center justify-center gap-1 rounded-md text-center font-normal tabular-nums", {
|
|
9
|
+
variants: { size: {
|
|
10
|
+
default: "h-5 px-1.5 text-xs [--spark-icon-size:0.75rem]",
|
|
11
|
+
medium: "h-6 px-2 text-sm [--spark-icon-size:0.875rem]"
|
|
12
|
+
} },
|
|
13
|
+
defaultVariants: { size: "default" }
|
|
14
|
+
});
|
|
15
|
+
const Badge = React$1.forwardRef(({ className, children, styleVariant, color, size, ...props }, ref) => {
|
|
8
16
|
return /* @__PURE__ */ jsx("span", {
|
|
9
17
|
"data-slot": "badge",
|
|
10
18
|
"data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "soft" : void 0,
|
|
11
19
|
"data-accent-color": color ? accentByColor[color] : void 0,
|
|
12
|
-
className: cn(
|
|
20
|
+
className: cn(badgeVariants({ size }), "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))", className),
|
|
13
21
|
ref,
|
|
14
22
|
...props,
|
|
15
23
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","names":["React"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n/** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */\nexport type SparkBadgeColor =\n | 'primary'\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'danger'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n
|
|
1
|
+
{"version":3,"file":"badge.js","names":["React"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n/** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */\nexport type SparkBadgeColor =\n | 'primary'\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'danger'\n\nconst badgeVariants = cva(\n 'inline-flex min-w-5 items-center justify-center gap-1 rounded-md text-center font-normal tabular-nums',\n {\n variants: {\n size: {\n default: 'h-5 px-1.5 text-xs [--spark-icon-size:0.75rem]',\n medium: 'h-6 px-2 text-sm [--spark-icon-size:0.875rem]',\n },\n },\n defaultVariants: { size: 'default' },\n },\n)\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n size?: 'default' | 'medium'\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, size, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n badgeVariants({ size }),\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;;;AAgBA,MAAM,gBAAgB,IACpB,yGACA;CACE,UAAU,EACR,MAAM;EACJ,SAAS;EACT,QAAQ;CACV,EACF;CACA,iBAAiB,EAAE,MAAM,UAAU;AACrC,CACF;AASA,MAAM,QAAQA,QAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,MAAM,GAAG,SAAS,QAAQ;CAErE,OACE,oBAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQ,cAAc,SAAS,KAAA;EAClD,WAAW,GACT,cAAc,EAAE,KAAK,CAAC,GACtB,4FACA,4GACA,SACF;EACK;EACL,GAAI;EAEH;CACG,CAAA;AAEV,CACF;AAEA,MAAM,cAAc"}
|
|
@@ -6,7 +6,7 @@ import { VariantProps } from "class-variance-authority";
|
|
|
6
6
|
//#region src/components/banner.d.ts
|
|
7
7
|
type BannerVariant = 'error' | 'info' | 'neutral' | 'success' | 'warning';
|
|
8
8
|
declare const bannerVariants: (props?: ({
|
|
9
|
-
variant?: "
|
|
9
|
+
variant?: "neutral" | "success" | "warning" | "error" | "info" | null | undefined;
|
|
10
10
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
11
|
interface BannerProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof bannerVariants> {
|
|
12
12
|
/** Renders a close button. The Banner stays visible: hide it in this handler. */
|
|
@@ -6,7 +6,7 @@ import { VariantProps } from "class-variance-authority";
|
|
|
6
6
|
//#region src/components/banner.d.ts
|
|
7
7
|
type BannerVariant = 'error' | 'info' | 'neutral' | 'success' | 'warning';
|
|
8
8
|
declare const bannerVariants: (props?: ({
|
|
9
|
-
variant?: "
|
|
9
|
+
variant?: "neutral" | "success" | "warning" | "error" | "info" | null | undefined;
|
|
10
10
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
11
|
interface BannerProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof bannerVariants> {
|
|
12
12
|
/** Renders a close button. The Banner stays visible: hide it in this handler. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { o as SparkCardColor, s as SparkCardVariant } from "../theme-types-CKZzOmSa.cjs";
|
|
4
4
|
import { ContainerRadius } from "../lib/container-chrome.cjs";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import { useRender } from "@base-ui/react/use-render";
|
package/dist/components/box.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { o as SparkCardColor, s as SparkCardVariant } from "../theme-types-CKZzOmSa.js";
|
|
4
4
|
import { ContainerRadius } from "../lib/container-chrome.js";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import { useRender } from "@base-ui/react/use-render";
|
|
@@ -43,7 +43,7 @@ function BubbleContent({ className, render, ...props }) {
|
|
|
43
43
|
render,
|
|
44
44
|
props: (0, _base_ui_react_merge_props.mergeProps)({
|
|
45
45
|
"data-slot": "bubble-content",
|
|
46
|
-
className: (0, cn.cn)("w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:
|
|
46
|
+
className: (0, cn.cn)("w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:ring-2 [button,a]:focus-visible:ring-current [button,a]:focus-visible:ring-inset", className)
|
|
47
47
|
}, props)
|
|
48
48
|
});
|
|
49
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bubble.cjs","names":[],"sources":["../../src/components/bubble.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nfunction BubbleGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"bubble-group\"\n className={cn('flex min-w-0 flex-col gap-2', className)}\n {...props}\n />\n )\n}\n\n// Each variant paints the nested [data-slot=bubble-content] surface (and its\n// interactive hover when the content is a button/anchor). Colours read spark\n// scales: accent (spark-9) for the sender's own bubbles, the neutral gray scale\n// for received/muted, and the red scale for destructive. `tinted` derives a\n// soft accent tint via oklch(from var(--spark-9) …) so it tracks the accent knob.\nconst bubbleVariants = cva(\n 'group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full',\n {\n variants: {\n variant: {\n default:\n '*:data-[slot=bubble-content]:bg-spark-9 *:data-[slot=bubble-content]:text-spark-contrast [&>[data-slot=bubble-content]:is(button,a):hover]:bg-spark-10',\n secondary:\n '*:data-[slot=bubble-content]:bg-gray-2 *:data-[slot=bubble-content]:text-gray [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3',\n muted:\n '*:data-[slot=bubble-content]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n tinted:\n '*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-gray dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.35_calc(c*0.5)_h)]',\n outline:\n '*:data-[slot=bubble-content]:border-gray *:data-[slot=bubble-content]:bg-gray-2 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n ghost:\n 'border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a2',\n destructive:\n '*:data-[slot=bubble-content]:bg-red-a3 *:data-[slot=bubble-content]:text-error dark:*:data-[slot=bubble-content]:bg-red-a4 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a4 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a5',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nfunction Bubble({\n variant = 'default',\n align = 'start',\n className,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof bubbleVariants> & {\n align?: 'start' | 'end'\n }) {\n return (\n <div\n data-slot=\"bubble\"\n data-variant={variant}\n data-align={align}\n className={cn(bubbleVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\n// `render` replaces radix `asChild`: pass an element (button, anchor, …) to make\n// the surface interactive; Base UI's useRender merges props onto it.\nfunction BubbleContent({\n className,\n render,\n ...props\n}: useRender.ComponentProps<'div'>) {\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'bubble-content',\n className: cn(\n 'w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:
|
|
1
|
+
{"version":3,"file":"bubble.cjs","names":[],"sources":["../../src/components/bubble.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nfunction BubbleGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"bubble-group\"\n className={cn('flex min-w-0 flex-col gap-2', className)}\n {...props}\n />\n )\n}\n\n// Each variant paints the nested [data-slot=bubble-content] surface (and its\n// interactive hover when the content is a button/anchor). Colours read spark\n// scales: accent (spark-9) for the sender's own bubbles, the neutral gray scale\n// for received/muted, and the red scale for destructive. `tinted` derives a\n// soft accent tint via oklch(from var(--spark-9) …) so it tracks the accent knob.\nconst bubbleVariants = cva(\n 'group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full',\n {\n variants: {\n variant: {\n default:\n '*:data-[slot=bubble-content]:bg-spark-9 *:data-[slot=bubble-content]:text-spark-contrast [&>[data-slot=bubble-content]:is(button,a):hover]:bg-spark-10',\n secondary:\n '*:data-[slot=bubble-content]:bg-gray-2 *:data-[slot=bubble-content]:text-gray [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3',\n muted:\n '*:data-[slot=bubble-content]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n tinted:\n '*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-gray dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.35_calc(c*0.5)_h)]',\n outline:\n '*:data-[slot=bubble-content]:border-gray *:data-[slot=bubble-content]:bg-gray-2 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n ghost:\n 'border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a2',\n destructive:\n '*:data-[slot=bubble-content]:bg-red-a3 *:data-[slot=bubble-content]:text-error dark:*:data-[slot=bubble-content]:bg-red-a4 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a4 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a5',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nfunction Bubble({\n variant = 'default',\n align = 'start',\n className,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof bubbleVariants> & {\n align?: 'start' | 'end'\n }) {\n return (\n <div\n data-slot=\"bubble\"\n data-variant={variant}\n data-align={align}\n className={cn(bubbleVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\n// `render` replaces radix `asChild`: pass an element (button, anchor, …) to make\n// the surface interactive; Base UI's useRender merges props onto it.\nfunction BubbleContent({\n className,\n render,\n ...props\n}: useRender.ComponentProps<'div'>) {\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'bubble-content',\n className: cn(\n 'w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:ring-2 [button,a]:focus-visible:ring-current [button,a]:focus-visible:ring-inset',\n className,\n ),\n } as React.ComponentProps<'div'>,\n props,\n ),\n })\n}\n\nconst bubbleReactionsVariants = cva(\n 'absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-gray-3 px-1.5 py-0.5 text-sm ring-3 ring-gray-2 has-[button]:p-0',\n {\n variants: {\n side: {\n top: 'top-0 -translate-y-3/4',\n bottom: 'bottom-0 translate-y-3/4',\n },\n align: {\n start: 'left-3',\n end: 'right-3',\n },\n },\n defaultVariants: {\n side: 'bottom',\n align: 'end',\n },\n },\n)\n\nfunction BubbleReactions({\n side = 'bottom',\n align = 'end',\n className,\n ...props\n}: React.ComponentProps<'div'> & {\n align?: 'start' | 'end'\n side?: 'top' | 'bottom'\n}) {\n return (\n <div\n data-slot=\"bubble-reactions\"\n data-align={align}\n data-side={side}\n className={cn(bubbleReactionsVariants({ side, align }), className)}\n {...props}\n />\n )\n}\n\nexport { Bubble, BubbleContent, BubbleGroup, BubbleReactions }\n"],"mappings":";;;;;;;;;;;AAMA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,YAAA,GAAA,GAAA,IAAc,+BAA+B,SAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAOA,MAAM,kBAAA,GAAA,yBAAA,KACJ,yKACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,WACE;EACF,OACE;EACF,QACE;EACF,SACE;EACF,OACE;EACF,aACE;CACJ,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAS,OAAO,EACd,UAAU,WACV,QAAQ,SACR,WACA,GAAG,SAIA;CACH,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,cAAY;EACZ,YAAA,GAAA,GAAA,IAAc,eAAe,EAAE,QAAQ,CAAC,GAAG,SAAS;EACpD,GAAI;CACL,CAAA;AAEL;AAIA,SAAS,cAAc,EACrB,WACA,QACA,GAAG,SAC+B;CAClC,QAAA,GAAA,0BAAA,WAAiB;EACf,gBAAgB;EAChB;EACA,QAAA,GAAA,2BAAA,YACE;GACE,aAAa;GACb,YAAA,GAAA,GAAA,IACE,4VACA,SACF;EACF,GACA,KACF;CACF,CAAC;AACH;AAEA,MAAM,2BAAA,GAAA,yBAAA,KACJ,wJACA;CACE,UAAU;EACR,MAAM;GACJ,KAAK;GACL,QAAQ;EACV;EACA,OAAO;GACL,OAAO;GACP,KAAK;EACP;CACF;CACA,iBAAiB;EACf,MAAM;EACN,OAAO;CACT;AACF,CACF;AAEA,SAAS,gBAAgB,EACvB,OAAO,UACP,QAAQ,OACR,WACA,GAAG,SAIF;CACD,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,cAAY;EACZ,aAAW;EACX,YAAA,GAAA,GAAA,IAAc,wBAAwB;GAAE;GAAM;EAAM,CAAC,GAAG,SAAS;EACjE,GAAI;CACL,CAAA;AAEL"}
|
|
@@ -10,7 +10,7 @@ declare function BubbleGroup({
|
|
|
10
10
|
...props
|
|
11
11
|
}: React$1.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
declare const bubbleVariants: (props?: ({
|
|
13
|
-
variant?: "ghost" | "outline" | "
|
|
13
|
+
variant?: "ghost" | "outline" | "destructive" | "default" | "secondary" | "muted" | "tinted" | null | undefined;
|
|
14
14
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
15
15
|
declare function Bubble({
|
|
16
16
|
variant,
|
|
@@ -10,7 +10,7 @@ declare function BubbleGroup({
|
|
|
10
10
|
...props
|
|
11
11
|
}: React$1.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
declare const bubbleVariants: (props?: ({
|
|
13
|
-
variant?: "ghost" | "outline" | "
|
|
13
|
+
variant?: "ghost" | "outline" | "destructive" | "default" | "secondary" | "muted" | "tinted" | null | undefined;
|
|
14
14
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
15
15
|
declare function Bubble({
|
|
16
16
|
variant,
|
|
@@ -40,7 +40,7 @@ function BubbleContent({ className, render, ...props }) {
|
|
|
40
40
|
render,
|
|
41
41
|
props: mergeProps({
|
|
42
42
|
"data-slot": "bubble-content",
|
|
43
|
-
className: cn("w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:
|
|
43
|
+
className: cn("w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:ring-2 [button,a]:focus-visible:ring-current [button,a]:focus-visible:ring-inset", className)
|
|
44
44
|
}, props)
|
|
45
45
|
});
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bubble.js","names":[],"sources":["../../src/components/bubble.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nfunction BubbleGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"bubble-group\"\n className={cn('flex min-w-0 flex-col gap-2', className)}\n {...props}\n />\n )\n}\n\n// Each variant paints the nested [data-slot=bubble-content] surface (and its\n// interactive hover when the content is a button/anchor). Colours read spark\n// scales: accent (spark-9) for the sender's own bubbles, the neutral gray scale\n// for received/muted, and the red scale for destructive. `tinted` derives a\n// soft accent tint via oklch(from var(--spark-9) …) so it tracks the accent knob.\nconst bubbleVariants = cva(\n 'group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full',\n {\n variants: {\n variant: {\n default:\n '*:data-[slot=bubble-content]:bg-spark-9 *:data-[slot=bubble-content]:text-spark-contrast [&>[data-slot=bubble-content]:is(button,a):hover]:bg-spark-10',\n secondary:\n '*:data-[slot=bubble-content]:bg-gray-2 *:data-[slot=bubble-content]:text-gray [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3',\n muted:\n '*:data-[slot=bubble-content]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n tinted:\n '*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-gray dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.35_calc(c*0.5)_h)]',\n outline:\n '*:data-[slot=bubble-content]:border-gray *:data-[slot=bubble-content]:bg-gray-2 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n ghost:\n 'border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a2',\n destructive:\n '*:data-[slot=bubble-content]:bg-red-a3 *:data-[slot=bubble-content]:text-error dark:*:data-[slot=bubble-content]:bg-red-a4 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a4 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a5',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nfunction Bubble({\n variant = 'default',\n align = 'start',\n className,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof bubbleVariants> & {\n align?: 'start' | 'end'\n }) {\n return (\n <div\n data-slot=\"bubble\"\n data-variant={variant}\n data-align={align}\n className={cn(bubbleVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\n// `render` replaces radix `asChild`: pass an element (button, anchor, …) to make\n// the surface interactive; Base UI's useRender merges props onto it.\nfunction BubbleContent({\n className,\n render,\n ...props\n}: useRender.ComponentProps<'div'>) {\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'bubble-content',\n className: cn(\n 'w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:
|
|
1
|
+
{"version":3,"file":"bubble.js","names":[],"sources":["../../src/components/bubble.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\nfunction BubbleGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"bubble-group\"\n className={cn('flex min-w-0 flex-col gap-2', className)}\n {...props}\n />\n )\n}\n\n// Each variant paints the nested [data-slot=bubble-content] surface (and its\n// interactive hover when the content is a button/anchor). Colours read spark\n// scales: accent (spark-9) for the sender's own bubbles, the neutral gray scale\n// for received/muted, and the red scale for destructive. `tinted` derives a\n// soft accent tint via oklch(from var(--spark-9) …) so it tracks the accent knob.\nconst bubbleVariants = cva(\n 'group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full',\n {\n variants: {\n variant: {\n default:\n '*:data-[slot=bubble-content]:bg-spark-9 *:data-[slot=bubble-content]:text-spark-contrast [&>[data-slot=bubble-content]:is(button,a):hover]:bg-spark-10',\n secondary:\n '*:data-[slot=bubble-content]:bg-gray-2 *:data-[slot=bubble-content]:text-gray [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3',\n muted:\n '*:data-[slot=bubble-content]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n tinted:\n '*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-gray dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--spark-9)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--spark-9)_0.35_calc(c*0.5)_h)]',\n outline:\n '*:data-[slot=bubble-content]:border-gray *:data-[slot=bubble-content]:bg-gray-2 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a4',\n ghost:\n 'border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a3 [&>[data-slot=bubble-content]:is(button,a):hover]:text-gray dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-gray-a2',\n destructive:\n '*:data-[slot=bubble-content]:bg-red-a3 *:data-[slot=bubble-content]:text-error dark:*:data-[slot=bubble-content]:bg-red-a4 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a4 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-red-a5',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nfunction Bubble({\n variant = 'default',\n align = 'start',\n className,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof bubbleVariants> & {\n align?: 'start' | 'end'\n }) {\n return (\n <div\n data-slot=\"bubble\"\n data-variant={variant}\n data-align={align}\n className={cn(bubbleVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\n// `render` replaces radix `asChild`: pass an element (button, anchor, …) to make\n// the surface interactive; Base UI's useRender merges props onto it.\nfunction BubbleContent({\n className,\n render,\n ...props\n}: useRender.ComponentProps<'div'>) {\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'bubble-content',\n className: cn(\n 'w-fit max-w-full min-w-0 overflow-hidden rounded-lg border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:ring-2 [button,a]:focus-visible:ring-current [button,a]:focus-visible:ring-inset',\n className,\n ),\n } as React.ComponentProps<'div'>,\n props,\n ),\n })\n}\n\nconst bubbleReactionsVariants = cva(\n 'absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-gray-3 px-1.5 py-0.5 text-sm ring-3 ring-gray-2 has-[button]:p-0',\n {\n variants: {\n side: {\n top: 'top-0 -translate-y-3/4',\n bottom: 'bottom-0 translate-y-3/4',\n },\n align: {\n start: 'left-3',\n end: 'right-3',\n },\n },\n defaultVariants: {\n side: 'bottom',\n align: 'end',\n },\n },\n)\n\nfunction BubbleReactions({\n side = 'bottom',\n align = 'end',\n className,\n ...props\n}: React.ComponentProps<'div'> & {\n align?: 'start' | 'end'\n side?: 'top' | 'bottom'\n}) {\n return (\n <div\n data-slot=\"bubble-reactions\"\n data-align={align}\n data-side={side}\n className={cn(bubbleReactionsVariants({ side, align }), className)}\n {...props}\n />\n )\n}\n\nexport { Bubble, BubbleContent, BubbleGroup, BubbleReactions }\n"],"mappings":";;;;;;;;AAMA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,+BAA+B,SAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAOA,MAAM,iBAAiB,IACrB,yKACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,WACE;EACF,OACE;EACF,QACE;EACF,SACE;EACF,OACE;EACF,aACE;CACJ,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAS,OAAO,EACd,UAAU,WACV,QAAQ,SACR,WACA,GAAG,SAIA;CACH,OACE,oBAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,cAAY;EACZ,WAAW,GAAG,eAAe,EAAE,QAAQ,CAAC,GAAG,SAAS;EACpD,GAAI;CACL,CAAA;AAEL;AAIA,SAAS,cAAc,EACrB,WACA,QACA,GAAG,SAC+B;CAClC,OAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO,WACL;GACE,aAAa;GACb,WAAW,GACT,4VACA,SACF;EACF,GACA,KACF;CACF,CAAC;AACH;AAEA,MAAM,0BAA0B,IAC9B,wJACA;CACE,UAAU;EACR,MAAM;GACJ,KAAK;GACL,QAAQ;EACV;EACA,OAAO;GACL,OAAO;GACP,KAAK;EACP;CACF;CACA,iBAAiB;EACf,MAAM;EACN,OAAO;CACT;AACF,CACF;AAEA,SAAS,gBAAgB,EACvB,OAAO,UACP,QAAQ,OACR,WACA,GAAG,SAIF;CACD,OACE,oBAAC,OAAD;EACE,aAAU;EACV,cAAY;EACZ,aAAW;EACX,WAAW,GAAG,wBAAwB;GAAE;GAAM;EAAM,CAAC,GAAG,SAAS;EACjE,GAAI;CACL,CAAA;AAEL"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { g as SparkStyle } from "../theme-types-CKZzOmSa.cjs";
|
|
4
4
|
import { SparkAccentColor } from "../lib/accent-colors.cjs";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import { Button } from "@base-ui/react/button";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { g as SparkStyle } from "../theme-types-CKZzOmSa.js";
|
|
4
4
|
import { SparkAccentColor } from "../lib/accent-colors.js";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import { Button } from "@base-ui/react/button";
|