@giddaa-housing/ui 0.1.0 → 1.1.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/README.md +18 -6
- package/css/base.css +37 -0
- package/css/components.css +135 -0
- package/css/generated/shared.css +1 -0
- package/css/giddaa.css +402 -0
- package/css/preset.css +77 -0
- package/css/styles.css +2 -0
- package/css/theme.css +255 -0
- package/dist/accordion.d.ts +9 -10
- package/dist/accordion.js +41 -117
- package/dist/activity-timeline.d.ts +29 -0
- package/dist/activity-timeline.js +97 -0
- package/dist/alert.d.ts +8 -9
- package/dist/alert.js +53 -141
- package/dist/auth-layout.d.ts +23 -0
- package/dist/auth-layout.js +153 -0
- package/dist/avatar.d.ts +6 -6
- package/dist/avatar.js +40 -142
- package/dist/badge.d.ts +12 -13
- package/dist/badge.js +66 -114
- package/dist/bar-chart.d.ts +136 -114
- package/dist/bar-chart.js +244 -297
- package/dist/breadcrumb.d.ts +5 -5
- package/dist/breadcrumb.js +56 -148
- package/dist/bullet-chart.d.ts +33 -33
- package/dist/bullet-chart.js +123 -183
- package/dist/button-BZIeyUw6.d.ts +17 -0
- package/dist/button-group.d.ts +13 -16
- package/dist/button-group.js +38 -163
- package/dist/button.d.ts +2 -19
- package/dist/button.js +90 -142
- package/dist/calendar.d.ts +6 -6
- package/dist/calendar.js +134 -288
- package/dist/card.d.ts +14 -16
- package/dist/card.js +58 -174
- package/dist/carousel.d.ts +34 -35
- package/dist/carousel.js +319 -378
- package/dist/chart.d.ts +58 -59
- package/dist/chart.js +350 -466
- package/dist/checkbox.d.ts +10 -12
- package/dist/checkbox.js +84 -84
- package/dist/cn-BI_4DMBf.js +23 -0
- package/dist/collapsible.d.ts +7 -8
- package/dist/collapsible.js +23 -77
- package/dist/combobox.d.ts +10 -10
- package/dist/combobox.js +220 -696
- package/dist/cta.d.ts +64 -0
- package/dist/cta.js +192 -0
- package/dist/currency-selector.d.ts +41 -0
- package/dist/currency-selector.js +114 -0
- package/dist/data-table.d.ts +164 -0
- package/dist/data-table.js +673 -0
- package/dist/date-picker.d.ts +27 -20
- package/dist/date-picker.js +122 -520
- package/dist/details-card.d.ts +19 -0
- package/dist/details-card.js +118 -0
- package/dist/dialog.d.ts +13 -14
- package/dist/dialog.js +117 -320
- package/dist/dropdown-menu.d.ts +14 -14
- package/dist/dropdown-menu.js +170 -365
- package/dist/dropzone.d.ts +55 -55
- package/dist/dropzone.js +328 -467
- package/dist/editorial-card.d.ts +27 -0
- package/dist/editorial-card.js +144 -0
- package/dist/empty-state.d.ts +8 -9
- package/dist/empty-state.js +48 -135
- package/dist/field.d.ts +23 -25
- package/dist/field.js +111 -327
- package/dist/filter.d.ts +118 -0
- package/dist/filter.js +775 -0
- package/dist/footer.d.ts +40 -0
- package/dist/footer.js +227 -0
- package/dist/funnel-chart.d.ts +38 -41
- package/dist/funnel-chart.js +168 -563
- package/dist/gallery-indicator.d.ts +17 -0
- package/dist/gallery-indicator.js +75 -0
- package/dist/heatmap-chart.d.ts +95 -0
- package/dist/heatmap-chart.js +197 -0
- package/dist/infotip.d.ts +10 -0
- package/dist/infotip.js +40 -0
- package/dist/input-CfoEJ8A6.d.ts +12 -0
- package/dist/input-group.d.ts +16 -19
- package/dist/input-group.js +92 -372
- package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
- package/dist/input-size-context.d.ts +2 -11
- package/dist/input-size-context.js +14 -20
- package/dist/input.d.ts +2 -13
- package/dist/input.js +23 -79
- package/dist/item.d.ts +7 -8
- package/dist/item.js +22 -89
- package/dist/kpi-card.d.ts +18 -20
- package/dist/kpi-card.js +84 -232
- package/dist/label.d.ts +6 -6
- package/dist/label.js +39 -66
- package/dist/line-chart.d.ts +88 -89
- package/dist/line-chart.js +143 -262
- package/dist/logo.d.ts +4 -4
- package/dist/logo.js +87 -141
- package/dist/map-indicator.d.ts +13 -0
- package/dist/map-indicator.js +83 -0
- package/dist/match.d.ts +15 -0
- package/dist/match.js +68 -0
- package/dist/media-gallery-hero.d.ts +58 -0
- package/dist/media-gallery-hero.js +201 -0
- package/dist/media-player.d.ts +60 -0
- package/dist/media-player.js +919 -0
- package/dist/multi-step-form.d.ts +56 -0
- package/dist/multi-step-form.js +342 -0
- package/dist/number-input.d.ts +34 -34
- package/dist/number-input.js +62 -413
- package/dist/page-header.d.ts +10 -11
- package/dist/page-header.js +34 -107
- package/dist/pagination.d.ts +17 -20
- package/dist/pagination.js +132 -341
- package/dist/password-input.d.ts +5 -12
- package/dist/password-input.js +32 -354
- package/dist/phone-input.d.ts +19 -19
- package/dist/phone-input.js +232 -561
- package/dist/photo-gallery.d.ts +20 -20
- package/dist/photo-gallery.js +314 -746
- package/dist/picker-lzgmsNfG.js +32 -0
- package/dist/pie-chart.d.ts +60 -60
- package/dist/pie-chart.js +141 -184
- package/dist/popover.d.ts +9 -9
- package/dist/popover.js +60 -156
- package/dist/price-tag.d.ts +34 -0
- package/dist/price-tag.js +118 -0
- package/dist/progress.d.ts +18 -16
- package/dist/progress.js +156 -300
- package/dist/property-listing-card.d.ts +29 -0
- package/dist/property-listing-card.js +117 -0
- package/dist/radar-chart.d.ts +108 -0
- package/dist/radar-chart.js +172 -0
- package/dist/radio-group.d.ts +11 -13
- package/dist/radio-group.js +47 -96
- package/dist/review-block.d.ts +18 -0
- package/dist/review-block.js +154 -0
- package/dist/rich-text-editor.d.ts +30 -14
- package/dist/rich-text-editor.js +594 -979
- package/dist/scatter-chart.d.ts +140 -0
- package/dist/scatter-chart.js +248 -0
- package/dist/search-input.d.ts +8 -15
- package/dist/search-input.js +58 -408
- package/dist/select.d.ts +8 -8
- package/dist/select.js +131 -291
- package/dist/separator.d.ts +8 -9
- package/dist/separator.js +31 -70
- package/dist/sheet.d.ts +11 -11
- package/dist/sheet.js +84 -262
- package/dist/sidebar.d.ts +32 -37
- package/dist/sidebar.js +380 -1055
- package/dist/size-context-D4mYvcg8.d.ts +10 -0
- package/dist/size-context.d.ts +2 -11
- package/dist/size-context.js +14 -18
- package/dist/skeleton.d.ts +4 -5
- package/dist/skeleton.js +9 -45
- package/dist/slider.d.ts +27 -0
- package/dist/slider.js +81 -0
- package/dist/sparkline.d.ts +43 -46
- package/dist/sparkline.js +223 -561
- package/dist/stepper.d.ts +23 -24
- package/dist/stepper.js +149 -276
- package/dist/styles.css +9995 -2
- package/dist/switch.d.ts +10 -12
- package/dist/switch.js +49 -106
- package/dist/table-card.d.ts +35 -0
- package/dist/table-card.js +125 -0
- package/dist/table.d.ts +18 -14
- package/dist/table.js +114 -182
- package/dist/tabs.d.ts +23 -15
- package/dist/tabs.js +62 -149
- package/dist/tag.d.ts +22 -23
- package/dist/tag.js +104 -156
- package/dist/testimonial-block.d.ts +33 -0
- package/dist/testimonial-block.js +208 -0
- package/dist/textarea-IS_D8pXf.d.ts +11 -0
- package/dist/textarea.d.ts +2 -12
- package/dist/textarea.js +20 -74
- package/dist/time-picker.d.ts +11 -11
- package/dist/time-picker.js +247 -464
- package/dist/toast.d.ts +16 -18
- package/dist/toast.js +154 -310
- package/dist/tooltip.d.ts +9 -10
- package/dist/tooltip.js +33 -91
- package/dist/tree-map.d.ts +54 -57
- package/dist/tree-map.js +231 -646
- package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
- package/dist/waterfall-chart.d.ts +126 -0
- package/dist/waterfall-chart.js +480 -0
- package/package.json +123 -34
- package/dist/accordion.js.map +0 -1
- package/dist/alert.js.map +0 -1
- package/dist/avatar.js.map +0 -1
- package/dist/badge.js.map +0 -1
- package/dist/bar-chart.js.map +0 -1
- package/dist/base.css +0 -32
- package/dist/breadcrumb.js.map +0 -1
- package/dist/bullet-chart.js.map +0 -1
- package/dist/button-group.js.map +0 -1
- package/dist/button.js.map +0 -1
- package/dist/calendar.js.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/chart.js.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/collapsible.js.map +0 -1
- package/dist/combobox.js.map +0 -1
- package/dist/date-picker.js.map +0 -1
- package/dist/dialog.js.map +0 -1
- package/dist/dropdown-menu.js.map +0 -1
- package/dist/dropzone.js.map +0 -1
- package/dist/empty-state.js.map +0 -1
- package/dist/field.js.map +0 -1
- package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
- package/dist/funnel-chart.js.map +0 -1
- package/dist/index.d.ts +0 -87
- package/dist/index.js +0 -10448
- package/dist/index.js.map +0 -1
- package/dist/input-group.js.map +0 -1
- package/dist/input-size-context.js.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/item.js.map +0 -1
- package/dist/kpi-card.js.map +0 -1
- package/dist/label.js.map +0 -1
- package/dist/line-chart.js.map +0 -1
- package/dist/logo.js.map +0 -1
- package/dist/number-input.js.map +0 -1
- package/dist/page-header.js.map +0 -1
- package/dist/pagination.js.map +0 -1
- package/dist/password-input.js.map +0 -1
- package/dist/phone-input.js.map +0 -1
- package/dist/photo-gallery.js.map +0 -1
- package/dist/pie-chart.js.map +0 -1
- package/dist/popover.js.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/red-hat-display.css +0 -2
- package/dist/rich-text-editor.js.map +0 -1
- package/dist/search-input.js.map +0 -1
- package/dist/select.js.map +0 -1
- package/dist/separator.js.map +0 -1
- package/dist/sheet.js.map +0 -1
- package/dist/sidebar.js.map +0 -1
- package/dist/size-context.js.map +0 -1
- package/dist/skeleton.js.map +0 -1
- package/dist/sparkline.js.map +0 -1
- package/dist/stepper.js.map +0 -1
- package/dist/switch.js.map +0 -1
- package/dist/tab-list.d.ts +0 -38
- package/dist/tab-list.js +0 -394
- package/dist/tab-list.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tag.js.map +0 -1
- package/dist/textarea.js.map +0 -1
- package/dist/theme/giddaa.css +0 -2
- package/dist/time-picker.js.map +0 -1
- package/dist/toast.js.map +0 -1
- package/dist/tooltip.js.map +0 -1
- package/dist/tree-map.js.map +0 -1
package/dist/dropzone.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/dropzone.tsx","../src/lib/cn.ts","../src/lib/use-file-picker.ts"],"sourcesContent":["\"use client\";\n\nimport { UploadCloud } from \"lucide-react\";\nimport {\n\ttype ComponentProps,\n\tcreateContext,\n\ttype KeyboardEvent,\n\ttype ReactNode,\n\tuse,\n} from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport {\n\ttype UseFilePickerOptions,\n\ttype UseFilePickerReturn,\n\tuseFilePicker,\n} from \"../../lib/use-file-picker\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Context\n// ─────────────────────────────────────────────────────────────────────────────\n\ntype DropzoneContextValue = Pick<\n\tUseFilePickerReturn,\n\t| \"isDragging\"\n\t| \"openFileDialog\"\n\t| \"getInputProps\"\n\t| \"handleDragEnter\"\n\t| \"handleDragLeave\"\n\t| \"handleDragOver\"\n\t| \"handleDrop\"\n> & { isDisabled: boolean };\n\nconst DropzoneContext = createContext<DropzoneContextValue | null>(null);\n\nfunction useDropzoneContext(): DropzoneContextValue {\n\tconst ctx = use(DropzoneContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t\"Dropzone compound components must be rendered inside <Dropzone>.\",\n\t\t);\n\t}\n\treturn ctx;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Root\n// ─────────────────────────────────────────────────────────────────────────────\n\ninterface DropzoneProps extends UseFilePickerOptions {\n\tchildren?: ReactNode;\n\tclassName?: string;\n}\n\n/**\n * Context provider that owns the `useFilePicker` instance.\n * Wrap `<DropzoneArea>` and `<DropzoneInput>` (plus any content helpers)\n * inside this component.\n *\n * @example\n * ```tsx\n * <Dropzone accept=\"image/*\" multiple maxFiles={5} onFilesAccepted={handleFiles}>\n * <DropzoneArea>\n * <DropzoneIcon />\n * <DropzoneTitle>Choose a file or drag & drop</DropzoneTitle>\n * <DropzoneDescription>JPEG, PNG – up to 2 MB</DropzoneDescription>\n * <DropzoneTrigger />\n * </DropzoneArea>\n * <DropzoneInput />\n * </Dropzone>\n * ```\n */\nfunction Dropzone({\n\tchildren,\n\tclassName,\n\tdisabled,\n\t...options\n}: DropzoneProps) {\n\tconst {\n\t\tisDragging,\n\t\topenFileDialog,\n\t\tgetInputProps,\n\t\thandleDragEnter,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleDrop,\n\t} = useFilePicker({ ...options, disabled });\n\n\treturn (\n\t\t<DropzoneContext.Provider\n\t\t\tvalue={{\n\t\t\t\tisDragging,\n\t\t\t\tisDisabled: disabled ?? false,\n\t\t\t\topenFileDialog,\n\t\t\t\tgetInputProps,\n\t\t\t\thandleDragEnter,\n\t\t\t\thandleDragLeave,\n\t\t\t\thandleDragOver,\n\t\t\t\thandleDrop,\n\t\t\t}}\n\t\t>\n\t\t\t<div data-slot=\"dropzone\" className={cn(\"relative\", className)}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</DropzoneContext.Provider>\n\t);\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Area (the interactive drop target)\n// ─────────────────────────────────────────────────────────────────────────────\n\ninterface DropzoneAreaProps\n\textends Omit<ComponentProps<\"div\">, \"onClick\" | \"onKeyDown\"> {\n\t/**\n\t * Accessible label for the drop zone.\n\t * Defaults to a sensible description.\n\t */\n\tlabel?: string;\n}\n\n/**\n * The visual, interactive drop zone.\n *\n * - Behaves as a `button` (role, tabIndex, Enter/Space keyboard support).\n * - Announces drag-state changes to screen readers via a live region.\n * - Applies design-token-based styles and reacts to `data-dragging` /\n * `data-disabled` for visual feedback.\n */\nfunction DropzoneArea({\n\tchildren,\n\tclassName,\n\tlabel = \"Upload files. Click to browse, or drag and drop files here.\",\n\t...props\n}: DropzoneAreaProps) {\n\tconst {\n\t\tisDragging,\n\t\tisDisabled,\n\t\topenFileDialog,\n\t\thandleDragEnter,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleDrop,\n\t} = useDropzoneContext();\n\n\tfunction handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\te.preventDefault();\n\t\t\topenFileDialog();\n\t\t}\n\t}\n\n\treturn (\n\t\t// biome-ignore lint/a11y/useSemanticElements: The dropzone contains block-level compound content and owns drag events.\n\t\t<div\n\t\t\tdata-slot=\"dropzone-area\"\n\t\t\t// Data attributes drive all variant styles – no runtime class toggling.\n\t\t\tdata-dragging={isDragging ? \"true\" : undefined}\n\t\t\tdata-disabled={isDisabled ? \"true\" : undefined}\n\t\t\t// Accessibility ──────────────────────────────────────────────────────\n\t\t\trole=\"button\"\n\t\t\ttabIndex={isDisabled ? -1 : 0}\n\t\t\taria-label={label}\n\t\t\taria-disabled={isDisabled}\n\t\t\t// Interaction ────────────────────────────────────────────────────────\n\t\t\tonClick={isDisabled ? undefined : openFileDialog}\n\t\t\tonKeyDown={isDisabled ? undefined : handleKeyDown}\n\t\t\tonDragEnter={isDisabled ? undefined : handleDragEnter}\n\t\t\tonDragLeave={isDisabled ? undefined : handleDragLeave}\n\t\t\tonDragOver={isDisabled ? undefined : handleDragOver}\n\t\t\tonDrop={isDisabled ? undefined : handleDrop}\n\t\t\t// Styles ─────────────────────────────────────────────────────────────\n\t\t\tclassName={cn(\n\t\t\t\t// Layout & base\n\t\t\t\t\"flex min-h-48 w-full cursor-pointer flex-col items-center justify-center rounded-xl border p-8 text-center transition-colors duration-150 select-none\",\n\t\t\t\t// Default colours (design tokens)\n\t\t\t\t\"border-line bg-surface-brand-subtle\",\n\t\t\t\t// Focus ring – matches other interactive controls in the system\n\t\t\t\t\"focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-ring/20 focus-visible:border-ring\",\n\t\t\t\t// Dragging variant\n\t\t\t\t\"data-[dragging=true]:border-dashed data-[dragging=true]:border-line-focus data-[dragging=true]:bg-surface-brand/10\",\n\t\t\t\t// Disabled variant\n\t\t\t\t\"data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\n\t\t\t{/* Live region: announces drag-state changes to screen-reader users */}\n\t\t\t<span className=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t{isDragging ? \"Drop files to upload.\" : \"\"}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Input (visually hidden but present in the a11y tree)\n// ─────────────────────────────────────────────────────────────────────────────\n\ntype DropzoneInputProps = Omit<ComponentProps<\"input\">, \"type\">;\n\n/**\n * The hidden `<input type=\"file\">` that backs the drop zone.\n * Rendered off-screen (not `display:none`) so it remains accessible.\n * Place it as a sibling to `<DropzoneArea>` inside `<Dropzone>`.\n */\nfunction DropzoneInput({ className, ...props }: DropzoneInputProps) {\n\tconst { getInputProps } = useDropzoneContext();\n\treturn (\n\t\t<input\n\t\t\t{...getInputProps({\n\t\t\t\t// sr-only keeps it in the a11y tree without being visible\n\t\t\t\tclassName: cn(\"sr-only\", className),\n\t\t\t\t// Prevent it from receiving keyboard focus independently\n\t\t\t\ttabIndex: -1,\n\t\t\t\t...props,\n\t\t\t})}\n\t\t/>\n\t);\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Content helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\ntype DropzoneStateLabelProps = {\n\tchildren?: ReactNode;\n\tdisabledLabel?: ReactNode;\n\tdraggingLabel?: ReactNode;\n\tidleLabel?: ReactNode;\n};\n\ntype DropzoneTextProps = Omit<ComponentProps<\"p\">, \"children\"> &\n\tDropzoneStateLabelProps;\n\nfunction useDropzoneStateLabel({\n\tchildren,\n\tdisabledLabel,\n\tdraggingLabel,\n\tidleLabel,\n}: DropzoneStateLabelProps) {\n\tconst { isDragging, isDisabled } = useDropzoneContext();\n\n\tif (isDisabled && disabledLabel !== undefined) {\n\t\treturn disabledLabel;\n\t}\n\n\tif (isDragging && draggingLabel !== undefined) {\n\t\treturn draggingLabel;\n\t}\n\n\treturn idleLabel ?? children;\n}\n\n/**\n * A centred, brand-coloured icon container pre-populated with an upload cloud\n * icon. Pass `children` to swap the icon.\n */\nfunction DropzoneIcon({\n\tclassName,\n\tchildren,\n\t...props\n}: ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"dropzone-icon\"\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={cn(\n\t\t\t\t\"mb-4 flex size-11 shrink-0 items-center justify-center rounded-full\",\n\t\t\t\t// Solid brand fill with an inset ring for depth\n\t\t\t\t\"bg-surface-brand text-fg-on-brand ring-1 ring-inset ring-white/10\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children ?? <UploadCloud className=\"size-5\" />}\n\t\t</div>\n\t);\n}\n\n/**\n * Primary heading text inside the drop zone.\n */\nfunction DropzoneTitle({\n\tclassName,\n\tchildren,\n\tdisabledLabel,\n\tdraggingLabel,\n\tidleLabel,\n\t...props\n}: DropzoneTextProps) {\n\tconst label = useDropzoneStateLabel({\n\t\tchildren,\n\t\tdisabledLabel,\n\t\tdraggingLabel,\n\t\tidleLabel,\n\t});\n\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"dropzone-title\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-lg font-semibold leading-snug text-fg-primary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label}\n\t\t</p>\n\t);\n}\n\n/**\n * Secondary descriptive text inside the drop zone (file-type hints, size\n * limits, etc.).\n */\nfunction DropzoneDescription({\n\tclassName,\n\tchildren,\n\tdisabledLabel,\n\tdraggingLabel,\n\tidleLabel,\n\t...props\n}: DropzoneTextProps) {\n\tconst label = useDropzoneStateLabel({\n\t\tchildren,\n\t\tdisabledLabel,\n\t\tdraggingLabel,\n\t\tidleLabel,\n\t});\n\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"dropzone-description\"\n\t\t\tclassName={cn(\"mt-1 text-sm text-fg-muted\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label}\n\t\t</p>\n\t);\n}\n\n/**\n * A decorative \"Browse File\" pill that visually suggests the click action.\n *\n * This element is `aria-hidden` because the surrounding `<DropzoneArea>`\n * already exposes a labelled `button` role to assistive technologies.\n * The pill is purely a visual affordance.\n */\nfunction DropzoneTrigger({\n\tclassName,\n\tchildren = \"Browse File\",\n\t...props\n}: ComponentProps<\"span\">) {\n\treturn (\n\t\t<span\n\t\t\tdata-slot=\"dropzone-trigger\"\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={cn(\n\t\t\t\t\"mt-5 inline-flex h-8 shrink-0 items-center justify-center rounded-lg px-4\",\n\t\t\t\t\"bg-primary text-sm font-medium text-primary-foreground\",\n\t\t\t\t\"transition-colors duration-150\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</span>\n\t);\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Exports\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport {\n\tDropzone,\n\tDropzoneArea,\n\tDropzoneDescription,\n\tDropzoneIcon,\n\tDropzoneInput,\n\tDropzoneTitle,\n\tDropzoneTrigger,\n\tuseDropzoneContext,\n};\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import {\n\ttype ChangeEvent,\n\ttype ComponentPropsWithoutRef,\n\ttype DragEvent,\n\ttype Ref,\n\ttype RefObject,\n\tuseCallback,\n\tuseRef,\n\tuseState,\n} from \"react\";\n\ntype FilePickerErrorCode =\n\t| \"file-invalid-type\"\n\t| \"file-too-large\"\n\t| \"too-many-files\";\n\ntype FilePickerError = {\n\tcode: FilePickerErrorCode;\n\tmessage: string;\n};\n\ntype FileRejection = {\n\tfile: File;\n\terrors: FilePickerError[];\n};\n\ntype FilePickerResult = {\n\tacceptedFiles: File[];\n\trejectedFiles: FileRejection[];\n};\n\ntype UseFilePickerOptions = {\n\taccept?: string;\n\tdisabled?: boolean;\n\tmaxFiles?: number;\n\tmaxSize?: number;\n\tmultiple?: boolean;\n\tonFilesAccepted?: (files: File[]) => void;\n\tonFilesChange?: (result: FilePickerResult) => void;\n\tonFilesRejected?: (rejectedFiles: FileRejection[]) => void;\n};\n\ntype FilePickerInputProps = Omit<\n\tComponentPropsWithoutRef<\"input\">,\n\t\"type\" | \"accept\" | \"multiple\"\n> & {\n\taccept?: string;\n\tmultiple?: boolean;\n\tref?: Ref<HTMLInputElement>;\n};\n\ntype UseFilePickerReturn = {\n\tgetInputProps: (props?: FilePickerInputProps) => FilePickerInputProps & {\n\t\ttype: \"file\";\n\t\tref: Ref<HTMLInputElement>;\n\t};\n\thandleDragEnter: (event: DragEvent<HTMLElement>) => void;\n\thandleDragLeave: (event: DragEvent<HTMLElement>) => void;\n\thandleDragOver: (event: DragEvent<HTMLElement>) => void;\n\thandleDrop: (event: DragEvent<HTMLElement>) => void;\n\thandleFileChange: (event: ChangeEvent<HTMLInputElement>) => void;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tisDragging: boolean;\n\topenFileDialog: () => void;\n\tpickFiles: (files: FileList | File[]) => FilePickerResult;\n};\n\nfunction useFilePicker({\n\taccept = \"*\",\n\tdisabled = false,\n\tmaxFiles = Number.POSITIVE_INFINITY,\n\tmaxSize = Number.POSITIVE_INFINITY,\n\tmultiple = false,\n\tonFilesAccepted,\n\tonFilesChange,\n\tonFilesRejected,\n}: UseFilePickerOptions = {}): UseFilePickerReturn {\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst dragDepthRef = useRef(0);\n\tconst [isDragging, setIsDragging] = useState(false);\n\n\tconst pickFiles = useCallback(\n\t\t(files: FileList | File[]): FilePickerResult => {\n\t\t\tconst incomingFiles = Array.from(files);\n\t\t\tconst limit = multiple ? maxFiles : 1;\n\t\t\tconst acceptedFiles: File[] = [];\n\t\t\tconst rejectedFiles: FileRejection[] = [];\n\n\t\t\tif (incomingFiles.length === 0 || disabled) {\n\t\t\t\treturn { acceptedFiles, rejectedFiles };\n\t\t\t}\n\n\t\t\tfor (const [index, file] of incomingFiles.entries()) {\n\t\t\t\tconst errors: FilePickerError[] = [];\n\n\t\t\t\tif (index >= limit) {\n\t\t\t\t\terrors.push({\n\t\t\t\t\t\tcode: \"too-many-files\",\n\t\t\t\t\t\tmessage: multiple\n\t\t\t\t\t\t\t? `You can only select up to ${limit} files.`\n\t\t\t\t\t\t\t: \"You can only select one file.\",\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\terrors.push(...validateFile(file, { accept, maxSize }));\n\t\t\t\t}\n\n\t\t\t\tif (errors.length > 0) {\n\t\t\t\t\trejectedFiles.push({ file, errors });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tacceptedFiles.push(file);\n\t\t\t}\n\n\t\t\tconst result = { acceptedFiles, rejectedFiles };\n\n\t\t\tif (acceptedFiles.length > 0) {\n\t\t\t\tonFilesAccepted?.(acceptedFiles);\n\t\t\t}\n\n\t\t\tif (rejectedFiles.length > 0) {\n\t\t\t\tonFilesRejected?.(rejectedFiles);\n\t\t\t}\n\n\t\t\tonFilesChange?.(result);\n\n\t\t\tif (inputRef.current) {\n\t\t\t\tinputRef.current.value = \"\";\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\t[\n\t\t\taccept,\n\t\t\tdisabled,\n\t\t\tmaxFiles,\n\t\t\tmaxSize,\n\t\t\tmultiple,\n\t\t\tonFilesAccepted,\n\t\t\tonFilesChange,\n\t\t\tonFilesRejected,\n\t\t],\n\t);\n\n\tconst handleFileChange = useCallback(\n\t\t(event: ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (event.target.files) {\n\t\t\t\tpickFiles(event.target.files);\n\t\t\t}\n\t\t},\n\t\t[pickFiles],\n\t);\n\n\tconst openFileDialog = useCallback(() => {\n\t\tif (disabled) return;\n\t\tinputRef.current?.click();\n\t}, [disabled]);\n\n\tconst handleDragEnter = useCallback(\n\t\t(event: DragEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tif (disabled) return;\n\n\t\t\tdragDepthRef.current += 1;\n\t\t\tsetIsDragging(true);\n\t\t},\n\t\t[disabled],\n\t);\n\n\tconst handleDragLeave = useCallback(\n\t\t(event: DragEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tif (disabled) return;\n\n\t\t\tdragDepthRef.current = Math.max(0, dragDepthRef.current - 1);\n\t\t\tif (dragDepthRef.current === 0) {\n\t\t\t\tsetIsDragging(false);\n\t\t\t}\n\t\t},\n\t\t[disabled],\n\t);\n\n\tconst handleDragOver = useCallback((event: DragEvent<HTMLElement>) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}, []);\n\n\tconst handleDrop = useCallback(\n\t\t(event: DragEvent<HTMLElement>) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tdragDepthRef.current = 0;\n\t\t\tsetIsDragging(false);\n\n\t\t\tif (event.dataTransfer.files.length > 0) {\n\t\t\t\tpickFiles(event.dataTransfer.files);\n\t\t\t}\n\t\t},\n\t\t[pickFiles],\n\t);\n\n\tconst getInputProps = useCallback(\n\t\t(props: FilePickerInputProps = {}) => {\n\t\t\tconst { onChange, ref, ...inputProps } = props;\n\n\t\t\treturn {\n\t\t\t\t...inputProps,\n\t\t\t\ttype: \"file\" as const,\n\t\t\t\taccept: inputProps.accept ?? accept,\n\t\t\t\tdisabled: inputProps.disabled ?? disabled,\n\t\t\t\tmultiple: inputProps.multiple ?? multiple,\n\t\t\t\tref: (node: HTMLInputElement | null) => {\n\t\t\t\t\tinputRef.current = node;\n\t\t\t\t\tassignRef(ref, node);\n\t\t\t\t},\n\t\t\t\tonChange: (event: ChangeEvent<HTMLInputElement>) => {\n\t\t\t\t\tonChange?.(event);\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\thandleFileChange(event);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t[accept, disabled, handleFileChange, multiple],\n\t);\n\n\treturn {\n\t\tgetInputProps,\n\t\thandleDragEnter,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleDrop,\n\t\thandleFileChange,\n\t\tinputRef,\n\t\tisDragging,\n\t\topenFileDialog,\n\t\tpickFiles,\n\t};\n}\n\nfunction validateFile(\n\tfile: File,\n\toptions: Pick<UseFilePickerOptions, \"accept\" | \"maxSize\"> = {},\n): FilePickerError[] {\n\tconst { accept = \"*\", maxSize = Number.POSITIVE_INFINITY } = options;\n\tconst errors: FilePickerError[] = [];\n\n\tif (file.size > maxSize) {\n\t\terrors.push({\n\t\t\tcode: \"file-too-large\",\n\t\t\tmessage: `File \"${file.name}\" exceeds the maximum size of ${formatBytes(maxSize)}.`,\n\t\t});\n\t}\n\n\tif (!isAcceptedFile(file, accept)) {\n\t\terrors.push({\n\t\t\tcode: \"file-invalid-type\",\n\t\t\tmessage: `File \"${file.name}\" is not an accepted file type.`,\n\t\t});\n\t}\n\n\treturn errors;\n}\n\nfunction isAcceptedFile(file: File, accept = \"*\") {\n\tif (accept === \"*\" || accept.trim() === \"\") return true;\n\n\tconst acceptedTypes = accept\n\t\t.split(\",\")\n\t\t.map((type) => type.trim().toLowerCase())\n\t\t.filter(Boolean);\n\n\tif (acceptedTypes.length === 0) return true;\n\n\tconst fileType = file.type.toLowerCase();\n\tconst fileExtension = getFileExtension(file.name);\n\n\treturn acceptedTypes.some((acceptedType) => {\n\t\tif (acceptedType.startsWith(\".\")) {\n\t\t\treturn fileExtension === acceptedType;\n\t\t}\n\n\t\tif (acceptedType.endsWith(\"/*\")) {\n\t\t\treturn fileType.startsWith(acceptedType.slice(0, -1));\n\t\t}\n\n\t\treturn fileType === acceptedType;\n\t});\n}\n\nfunction formatBytes(bytes: number, decimals = 2): string {\n\tif (bytes === 0) return \"0 Bytes\";\n\tif (!Number.isFinite(bytes)) return \"unlimited\";\n\n\tconst unit = 1024;\n\tconst precision = Math.max(0, decimals);\n\tconst sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n\tconst sizeIndex = Math.min(\n\t\tMath.floor(Math.log(bytes) / Math.log(unit)),\n\t\tsizes.length - 1,\n\t);\n\n\treturn `${Number.parseFloat((bytes / unit ** sizeIndex).toFixed(precision))} ${sizes[sizeIndex]}`;\n}\n\nfunction getFileExtension(fileName: string) {\n\tconst extension = fileName.toLowerCase().split(\".\").pop();\n\treturn extension && extension !== fileName.toLowerCase()\n\t\t? `.${extension}`\n\t\t: \"\";\n}\n\nfunction assignRef<T>(ref: Ref<T> | undefined, value: T | null) {\n\tif (!ref) return;\n\n\tif (typeof ref === \"function\") {\n\t\tref(value);\n\t\treturn;\n\t}\n\n\tref.current = value;\n}\n\nexport { formatBytes, isAcceptedFile, useFilePicker, validateFile };\nexport type {\n\tFilePickerError,\n\tFilePickerErrorCode,\n\tFilePickerInputProps,\n\tFilePickerResult,\n\tFileRejection,\n\tUseFilePickerOptions,\n\tUseFilePickerReturn,\n};\n"],"mappings":"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","names":[]}
|
package/dist/empty-state.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/empty-state.tsx","../src/lib/cn.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nfunction Empty({\n\tclassName,\n\tvariant = \"default\",\n\t...props\n}: React.ComponentProps<\"div\"> & {\n\tvariant?: \"filled\" | \"outline\" | \"default\";\n}) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-gdt-xl rounded-2xl p-gdt-2xl text-center text-balance\",\n\t\t\t\tvariant === \"filled\" && \"bg-surface-raised border border-line-subtle\",\n\t\t\t\tvariant === \"outline\" && \"border border-line\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty-header\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-full max-w-95 flex-col items-center gap-gdt-sm\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst emptyMediaVariants = cva(\n\t\"mb-gdt-sm flex shrink-0 items-center justify-center text-fg-brand [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-transparent\",\n\t\t\t\ticon: \"size-24 rounded-full bg-surface-brand-subtle [&_svg:not([class*='size-'])]:size-10\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t},\n\t},\n);\n\nfunction EmptyMedia({\n\tclassName,\n\tvariant = \"default\",\n\t...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty-media\"\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(emptyMediaVariants({ variant, className }))}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty-title\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-gdt-h4 font-extrabold tracking-tight text-fg-primary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"empty-description\"\n\t\t\tclassName={cn(\n\t\t\t\t\"max-w-95 text-gdt-md font-normal text-fg-secondary [&>a]:font-semibold [&>a]:text-fg-brand [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-fg-primary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty-content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-full max-w-95 min-w-0 flex-col items-center justify-center gap-gdt-sm text-gdt-sm text-balance sm:flex-row [&_[data-slot=button]]:w-full sm:[&_[data-slot=button]]:w-auto\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tEmpty,\n\tEmptyHeader,\n\tEmptyTitle,\n\tEmptyDescription,\n\tEmptyContent,\n\tEmptyMedia,\n};\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":";AAAA,SAAS,WAA8B;;;ACAvC,SAA0B,YAAY;AACtC,SAAS,2BAA2B;AAEpC,IAAM,UAAU,oBAAoB;AAAA,EACnC,QAAQ;AAAA,IACP,aAAa;AAAA,MACZ,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAEM,SAAS,MAAM,QAAsB;AAC3C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC5B;;;ADlBE;AARF,SAAS,MAAM;AAAA,EACd;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACJ,GAEG;AACF,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACV;AAAA,QACA,YAAY,YAAY;AAAA,QACxB,YAAY,aAAa;AAAA,QACzB;AAAA,MACD;AAAA,MACC,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC1E,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACV;AAAA,QACA;AAAA,MACD;AAAA,MACC,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,IAAM,qBAAqB;AAAA,EAC1B;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,SAAS;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACP;AAAA,IACD;AAAA,IACA,iBAAiB;AAAA,MAChB,SAAS;AAAA,IACV;AAAA,EACD;AACD;AAEA,SAAS,WAAW;AAAA,EACnB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACJ,GAA0E;AACzE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,WAAW,GAAG,mBAAmB,EAAE,SAAS,UAAU,CAAC,CAAC;AAAA,MACvD,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACV;AAAA,QACA;AAAA,MACD;AAAA,MACC,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,MAAM,GAA8B;AAC7E,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACV;AAAA,QACA;AAAA,MACD;AAAA,MACC,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC3E,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACV;AAAA,QACA;AAAA,MACD;AAAA,MACC,GAAG;AAAA;AAAA,EACL;AAEF;","names":[]}
|
package/dist/field.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/field.tsx","../src/lib/cn.ts","../src/components/ui/label.tsx","../src/components/ui/separator.tsx","../src/components/ui/size-context.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { useMemo } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Label } from \"./label\";\nimport { Separator } from \"./separator\";\nimport { SizeProvider, useComponentSize } from \"./size-context\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n\treturn (\n\t\t<fieldset\n\t\t\tdata-slot=\"field-set\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldLegend({\n\tclassName,\n\tvariant = \"legend\",\n\t...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n\treturn (\n\t\t<legend\n\t\t\tdata-slot=\"field-legend\"\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(\n\t\t\t\t\"text-fg-primary data-[variant=label]:text-gdt-sm data-[variant=label]:font-semibold data-[variant=legend]:text-gdt-md data-[variant=legend]:font-medium\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-group\"\n\t\t\tclassName={cn(\n\t\t\t\t\"group/field-group @container/field-group flex w-full flex-col gap-6 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst fieldVariants = cva(\"group/field flex w-full\", {\n\tvariants: {\n\t\torientation: {\n\t\t\tvertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n\t\t\thorizontal:\n\t\t\t\t\"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio],[role=switch]]:mt-px data-[size=sm]:gap-1.5 data-[size=md]:gap-2.5 data-[size=lg]:gap-3\",\n\t\t\tresponsive:\n\t\t\t\t\"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio],[role=switch]]:mt-px\",\n\t\t},\n\t\tsize: {\n\t\t\tsm: \"gap-1\",\n\t\t\tmd: \"gap-1.5\",\n\t\t\tlg: \"gap-2\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\torientation: \"vertical\",\n\t\tsize: \"md\",\n\t},\n});\n\nfunction Field({\n\tclassName,\n\torientation = \"vertical\",\n\tsize,\n\t...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n\tconst resolvedSize = useComponentSize(size);\n\n\treturn (\n\t\t<SizeProvider size={resolvedSize}>\n\t\t\t{/* biome-ignore lint/a11y/useSemanticElements: this wrapper is reused for non-fieldset control layouts and needs div semantics. */}\n\t\t\t<div\n\t\t\t\trole=\"group\"\n\t\t\t\tdata-slot=\"field\"\n\t\t\t\tdata-orientation={orientation}\n\t\t\t\tdata-size={resolvedSize}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tfieldVariants({ orientation, size: resolvedSize }),\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</SizeProvider>\n\t);\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"group/field-content flex flex-1 flex-col leading-snug group-data-[size=sm]/field:gap-0.5 group-data-[size=md]/field:gap-0.5 group-data-[size=lg]/field:gap-1\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldLabel({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof Label>) {\n\treturn (\n\t\t<Label\n\t\t\tdata-slot=\"field-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"group/field-label peer/field-label flex w-fit gap-1 leading-snug font-semibold text-fg-primary group-data-[size=sm]/field:text-gdt-xs group-data-[size=md]/field:text-gdt-sm group-data-[size=lg]/field:text-gdt-md group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n\t\t\t\t\"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:gap-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-fit items-center gap-2 font-semibold text-fg-primary group-data-[size=sm]/field:text-gdt-xs group-data-[size=md]/field:text-gdt-sm group-data-[size=lg]/field:text-gdt-md group-data-[disabled=true]/field:opacity-50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"field-description\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-left font-normal text-fg-secondary group-data-[size=sm]/field:text-gdt-subtext group-data-[size=md]/field:text-gdt-xs group-data-[size=lg]/field:text-gdt-sm group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n\t\t\t\t\"last:mt-0 nth-last-2:-mt-1\",\n\t\t\t\t\"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction FieldSeparator({\n\tchildren,\n\tclassName,\n\t...props\n}: React.ComponentProps<\"div\"> & {\n\tchildren?: React.ReactNode;\n}) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"field-separator\"\n\t\t\tdata-content={!!children}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Separator className=\"absolute inset-0 top-1/2\" />\n\t\t\t{children && (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n\t\t\t\t\tdata-slot=\"field-separator-content\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction FieldError({\n\tclassName,\n\tchildren,\n\terrors,\n\t...props\n}: React.ComponentProps<\"div\"> & {\n\terrors?: Array<{ message?: string } | undefined>;\n}) {\n\tconst content = useMemo(() => {\n\t\tif (children) {\n\t\t\treturn children;\n\t\t}\n\n\t\tif (!errors?.length) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst uniqueErrors = [\n\t\t\t...new Map(errors.map((error) => [error?.message, error])).values(),\n\t\t];\n\n\t\tif (uniqueErrors?.length === 1) {\n\t\t\treturn uniqueErrors[0]?.message;\n\t\t}\n\n\t\treturn (\n\t\t\t<ul className=\"ml-4 flex list-disc flex-col gap-1\">\n\t\t\t\t{uniqueErrors.map(\n\t\t\t\t\t(error) =>\n\t\t\t\t\t\terror?.message && <li key={error.message}>{error.message}</li>,\n\t\t\t\t)}\n\t\t\t</ul>\n\t\t);\n\t}, [children, errors]);\n\n\tif (!content) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\trole=\"alert\"\n\t\t\tdata-slot=\"field-error\"\n\t\t\tclassName={cn(\"text-gdt-xs font-normal text-fg-danger\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n\nexport {\n\tField,\n\tFieldLabel,\n\tFieldDescription,\n\tFieldError,\n\tFieldGroup,\n\tFieldLegend,\n\tFieldSeparator,\n\tFieldSet,\n\tFieldContent,\n\tFieldTitle,\n};\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\n\nfunction Label({\n\tclassName,\n\tchildren,\n\twithAsterisk = false,\n\tshowOptionalText = false,\n\t...props\n}: React.ComponentProps<\"label\"> & {\n\twithAsterisk?: boolean;\n\tshowOptionalText?: boolean;\n}) {\n\tconst labelClassName = cn(\n\t\t\"flex w-fit max-w-full items-center gap-1 text-gdt-sm leading-none font-semibold text-fg-primary select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n\t\tclassName,\n\t);\n\n\tif (withAsterisk) {\n\t\treturn (\n\t\t\t// biome-ignore lint/a11y/noLabelWithoutControl: association is supplied by callers through htmlFor or nesting patterns.\n\t\t\t<label data-slot=\"label\" className={labelClassName} {...props}>\n\t\t\t\t<div className=\"inline-flex\">{children}</div>\n\t\t\t\t{withAsterisk && (\n\t\t\t\t\t<span className=\"inline-flex shrink-0 text-fg-danger\">*</span>\n\t\t\t\t)}\n\t\t\t\t{showOptionalText && (\n\t\t\t\t\t<span className=\"text-gdt-xs font-normal italic\">(optional)</span>\n\t\t\t\t)}\n\t\t\t</label>\n\t\t);\n\t}\n\n\treturn (\n\t\t// biome-ignore lint/a11y/noLabelWithoutControl: association is supplied by callers through htmlFor or nesting patterns.\n\t\t<label data-slot=\"label\" className={labelClassName} {...props}>\n\t\t\t<div>\n\t\t\t\t{children}{\" \"}\n\t\t\t\t{showOptionalText && (\n\t\t\t\t\t<span className=\"text-gdt-xs font-normal italic\">(optional)</span>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</label>\n\t);\n}\n\nexport { Label };\n","\"use client\";\n\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\";\nimport { cn } from \"../../lib/cn\";\n\nfunction Separator({\n\tclassName,\n\torientation = \"horizontal\",\n\tdashed = false,\n\tshade = \"feint\",\n\tthickness = \"default\",\n\t...props\n}: SeparatorPrimitive.Props & {\n\tdashed?: boolean;\n\tshade?: \"feint\" | \"deep\";\n\tthickness?: \"hairline\" | \"default\" | \"thick\" | \"extra-thick\";\n}) {\n\treturn (\n\t\t<SeparatorPrimitive\n\t\t\tdata-slot=\"separator\"\n\t\t\torientation={orientation}\n\t\t\tclassName={cn(\n\t\t\t\t\"shrink-0 data-horizontal:h-0 data-horizontal:w-full data-vertical:w-0 data-vertical:self-stretch\",\n\t\t\t\t// style\n\t\t\t\tdashed ? \"border-dashed\" : \"border-solid\",\n\t\t\t\t// shade\n\t\t\t\tshade === \"feint\" && \"border-line-subtle\",\n\t\t\t\tshade === \"deep\" && \"border-line\",\n\t\t\t\t// thickness\n\t\t\t\tthickness === \"hairline\" &&\n\t\t\t\t\t\"data-horizontal:border-t-[0.5px] data-vertical:border-l-[0.5px]\",\n\t\t\t\tthickness === \"default\" &&\n\t\t\t\t\t\"data-horizontal:border-t data-vertical:border-l\",\n\t\t\t\tthickness === \"thick\" &&\n\t\t\t\t\t\"data-horizontal:border-t-2 data-vertical:border-l-2\",\n\t\t\t\tthickness === \"extra-thick\" &&\n\t\t\t\t\t\"data-horizontal:border-t-[3px] data-vertical:border-l-[3px]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Separator };\n","\"use client\";\n\nimport { createContext, type ReactNode, useContext } from \"react\";\n\ntype ComponentSize = \"sm\" | \"md\" | \"lg\";\n\nconst SizeContext = createContext<ComponentSize | undefined>(undefined);\n\nfunction SizeProvider({\n\tchildren,\n\tsize,\n}: {\n\tchildren: ReactNode;\n\tsize?: ComponentSize | null;\n}) {\n\tif (!size) {\n\t\treturn <>{children}</>;\n\t}\n\n\treturn <SizeContext.Provider value={size}>{children}</SizeContext.Provider>;\n}\n\nfunction useComponentSize(\n\tsize?: ComponentSize | null,\n\tfallback: ComponentSize = \"md\",\n) {\n\tconst inheritedSize = useContext(SizeContext);\n\treturn size ?? inheritedSize ?? fallback;\n}\n\nexport { SizeProvider, useComponentSize, type ComponentSize };\n"],"mappings":"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","names":["jsx","jsx","jsx","jsxs"]}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/funnel-chart.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/funnel-chart.tsx","../src/lib/cn.ts","../src/components/ui/chart.tsx","../src/components/ui/size-context.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport {\n\tBar,\n\tBarChart,\n\tFunnel,\n\tFunnelChart as RechartsFunnelChart,\n\tXAxis,\n\tYAxis,\n} from \"recharts\";\nimport { cn } from \"../../lib/cn\";\nimport {\n\tChartCard,\n\ttype ChartConfig,\n\tChartContainer,\n\tChartDescription,\n\tChartHeader,\n\tChartTitle,\n\tChartTooltip,\n\tChartTooltipContent,\n\ttype ChartValueType,\n} from \"./chart\";\nimport { type ComponentSize, useComponentSize } from \"./size-context\";\n\n/**\n * A staged conversion chart for drop-off analytics. Two renderings share one\n * component — `funnel` draws connected, edge-sharing trapezoids (recharts\n * `FunnelChart`) that narrow top-down; `bars` draws flush, left-aligned tracks\n * (recharts `BarChart`, vertical layout) over a faint 100 % reference, using\n * recharts' built-in `Bar` `background`. Both read top-down as the audience\n * drops off, and both reuse the same stage data, palette, value-label column,\n * legend, frame, and tooltip — only the inner plot differs (the same split as\n * `Sparkline`). Per the chart architecture the recharts primitives are rendered\n * directly here, never wrapped.\n *\n * @example\n * <FunnelChart\n * data={[\n * { label: \"Applied\", value: 1000 },\n * { label: \"Pre-qualified\", value: 720 },\n * { label: \"Closed\", value: 110 },\n * ]}\n * title=\"Application drop-off\"\n * description=\"V3 analytics · last 30 days\"\n * tooltip\n * />\n */\n\n/** Funnel sizes line up with the three shared `ComponentSize` values. */\ntype FunnelChartSize = ComponentSize;\n\n/** Plot rendering — connected trapezoids or flush-stacked bars. */\ntype FunnelChartType = \"funnel\" | \"bars\";\n\n/** Where the colour-key legend sits relative to the plot. */\ntype FunnelLegendPlacement = \"right\" | \"bottom\";\n\ntype FunnelStage = {\n\t/** Stage name, e.g. \"Applied\". */\n\tlabel: string;\n\t/** Absolute count reaching this stage. */\n\tvalue: number;\n\t/** Segment colour; defaults to the palette in stage order. */\n\tfill?: string;\n};\n\n/**\n * Stage palette, ordered top-of-funnel → bottom: forest → brass → moss → clay →\n * stone. Giddaa has no `chart-1`…`chart-N` tokens yet, so these map to the brand\n * scales; assign by order, or override per stage with `fill`.\n */\nconst FUNNEL_CHART_PALETTE = [\n\t\"var(--color-forest-700)\",\n\t\"var(--color-brass-500)\",\n\t\"var(--color-moss-600)\",\n\t\"var(--color-clay-500)\",\n\t\"var(--color-stone-500)\",\n] as const;\n\ntype FunnelChartLayout = {\n\t/** Plot box height in px. */\n\theight: number;\n\t/** Plot box width in px — the funnel/bars column; labels + legend flow after. */\n\twidth: number;\n\t/** Corner radius for the `bars` rendering. */\n\tbarRadius: number;\n\t/** Bar thickness cap for the `bars` rendering. */\n\tbarMaxSize: number;\n};\n\nconst FUNNEL_CHART_LAYOUT: Record<FunnelChartSize, FunnelChartLayout> = {\n\tsm: { height: 150, width: 150, barRadius: 3, barMaxSize: 14 },\n\tmd: { height: 200, width: 220, barRadius: 4, barMaxSize: 18 },\n\tlg: { height: 264, width: 288, barRadius: 5, barMaxSize: 22 },\n};\n\n/** Vertical stage list — value-label column and the right-hand legend share it. */\nconst funnelStageListVariants = cva(\"flex min-w-0 flex-col\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"gap-2 text-gdt-xs\",\n\t\t\tmd: \"gap-3 text-gdt-sm\",\n\t\t\tlg: \"gap-3.5 text-gdt-sm\",\n\t\t},\n\t},\n\tdefaultVariants: { size: \"md\" },\n});\n\nconst funnelLegendDotVariants = cva(\"shrink-0 rounded-full\", {\n\tvariants: {\n\t\tsize: { sm: \"size-2\", md: \"size-2.5\", lg: \"size-3\" },\n\t},\n\tdefaultVariants: { size: \"md\" },\n});\n\ntype FunnelChartProps = Omit<\n\tReact.ComponentProps<typeof ChartCard>,\n\t\"size\" | \"children\"\n> & {\n\t/** Stages in funnel order — the widest (top) stage first. */\n\tdata: FunnelStage[];\n\t/** Plot rendering. Defaults to `funnel`. */\n\ttype?: FunnelChartType;\n\t/** Explicit size; otherwise inherited from the nearest `SizeProvider`. */\n\tsize?: FunnelChartSize;\n\t/** Chart heading. Omit to hide the title. */\n\ttitle?: React.ReactNode;\n\t/** Supporting metadata (period, source). Omit to hide the description. */\n\tdescription?: React.ReactNode;\n\t/** Enable the hover value tooltip. Default false. */\n\ttooltip?: boolean;\n\t/** Legend placement — a right column or a wrapped bottom row. Default right. */\n\tlegend?: FunnelLegendPlacement;\n\t/** Format the absolute count in the value label and tooltip. */\n\tvalueFormatter?: (value: number) => string;\n\t/** Value formatting for the tooltip. Defaults to `number`. */\n\tvalueType?: ChartValueType;\n};\n\nfunction FunnelChart({\n\tdata,\n\ttype = \"funnel\",\n\tsize,\n\ttitle,\n\tdescription,\n\ttooltip = false,\n\tlegend = \"right\",\n\tvalueFormatter = (value) => value.toLocaleString(\"en-NG\"),\n\tvalueType = \"number\",\n\tclassName,\n\t...props\n}: FunnelChartProps) {\n\tconst resolvedSize = useComponentSize(size);\n\tconst layout = FUNNEL_CHART_LAYOUT[resolvedSize];\n\n\tconst stages = data.map((stage, i) => ({\n\t\t...stage,\n\t\tfill: stage.fill ?? FUNNEL_CHART_PALETTE[i % FUNNEL_CHART_PALETTE.length],\n\t}));\n\t// Top stage is the funnel's 100 % reference — every share is relative to it.\n\tconst top = stages[0]?.value || 1;\n\n\tconst config = Object.fromEntries(\n\t\tstages.map((stage) => [\n\t\t\tstage.label,\n\t\t\t{ label: stage.label, color: stage.fill },\n\t\t]),\n\t) satisfies ChartConfig;\n\n\tconst tooltipNode = tooltip ? (\n\t\t<ChartTooltip\n\t\t\tcursor={false}\n\t\t\tcontent={<ChartTooltipContent nameKey=\"label\" valueType={valueType} />}\n\t\t/>\n\t) : null;\n\n\t// Per-segment colour comes from each datum's `fill` — recharts reads it\n\t// directly, so no (deprecated) `<Cell>` children are needed.\n\tconst chartNode =\n\t\ttype === \"bars\" ? (\n\t\t\t<BarChart\n\t\t\t\taccessibilityLayer\n\t\t\t\tlayout=\"vertical\"\n\t\t\t\tdata={stages}\n\t\t\t\tmargin={{ top: 0, right: 0, bottom: 0, left: 0 }}\n\t\t\t\tbarCategoryGap=\"0%\"\n\t\t\t>\n\t\t\t\t{tooltipNode}\n\t\t\t\t<XAxis type=\"number\" domain={[0, top]} hide />\n\t\t\t\t<YAxis type=\"category\" dataKey=\"label\" hide />\n\t\t\t\t<Bar\n\t\t\t\t\tdataKey=\"value\"\n\t\t\t\t\tradius={layout.barRadius}\n\t\t\t\t\tcolor=\"var(--color-line-subtle)\"\n\t\t\t\t\tisAnimationActive={false}\n\t\t\t\t/>\n\t\t\t</BarChart>\n\t\t) : (\n\t\t\t<RechartsFunnelChart margin={{ top: 0, right: 0, bottom: 0, left: 0 }}>\n\t\t\t\t{tooltipNode}\n\t\t\t\t<Funnel\n\t\t\t\t\tdata={stages}\n\t\t\t\t\tdataKey=\"value\"\n\t\t\t\t\tnameKey=\"label\"\n\t\t\t\t\tisAnimationActive={false}\n\t\t\t\t/>\n\t\t\t</RechartsFunnelChart>\n\t\t);\n\n\tconst valueLabels = (\n\t\t<ul className={cn(funnelStageListVariants({ size: resolvedSize }))}>\n\t\t\t{stages.map((stage) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={stage.label}\n\t\t\t\t\tclassName=\"whitespace-nowrap tabular-nums text-fg-primary\"\n\t\t\t\t>\n\t\t\t\t\t{valueFormatter(stage.value)} ·{\" \"}\n\t\t\t\t\t{Math.round((stage.value / top) * 100)}%\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n\n\tconst legendNode = (\n\t\t<ul\n\t\t\tclassName={cn(\n\t\t\t\tlegend === \"right\"\n\t\t\t\t\t? funnelStageListVariants({ size: resolvedSize })\n\t\t\t\t\t: cn(\n\t\t\t\t\t\t\t\"flex flex-row flex-wrap items-center gap-x-4 gap-y-2\",\n\t\t\t\t\t\t\tresolvedSize === \"sm\" ? \"text-gdt-xs\" : \"text-gdt-sm\",\n\t\t\t\t\t\t),\n\t\t\t)}\n\t\t>\n\t\t\t{stages.map((stage) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={stage.label}\n\t\t\t\t\tclassName=\"flex items-center gap-2 text-fg-primary\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={cn(funnelLegendDotVariants({ size: resolvedSize }))}\n\t\t\t\t\t\tstyle={{ backgroundColor: stage.fill }}\n\t\t\t\t\t/>\n\t\t\t\t\t<span className=\"min-w-0 truncate\">{stage.label}</span>\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t);\n\n\treturn (\n\t\t<ChartCard size={resolvedSize} className={className} {...props}>\n\t\t\t{(title != null || description != null) && (\n\t\t\t\t<ChartHeader>\n\t\t\t\t\t{title != null && <ChartTitle>{title}</ChartTitle>}\n\t\t\t\t\t{description != null && (\n\t\t\t\t\t\t<ChartDescription>{description}</ChartDescription>\n\t\t\t\t\t)}\n\t\t\t\t</ChartHeader>\n\t\t\t)}\n\t\t\t<div className=\"flex flex-col gap-4\">\n\t\t\t\t<div className=\"flex flex-wrap items-center gap-x-6 gap-y-4\">\n\t\t\t\t\t<ChartContainer\n\t\t\t\t\t\tconfig={config}\n\t\t\t\t\t\tclassName=\"aspect-auto shrink-0\"\n\t\t\t\t\t\tstyle={{ width: layout.width, height: layout.height }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{chartNode}\n\t\t\t\t\t</ChartContainer>\n\t\t\t\t\t{valueLabels}\n\t\t\t\t\t{legend === \"right\" && legendNode}\n\t\t\t\t</div>\n\t\t\t\t{legend === \"bottom\" && legendNode}\n\t\t\t</div>\n\t\t</ChartCard>\n\t);\n}\n\nexport { FUNNEL_CHART_LAYOUT, FUNNEL_CHART_PALETTE, FunnelChart };\nexport type {\n\tFunnelChartLayout,\n\tFunnelChartProps,\n\tFunnelChartSize,\n\tFunnelChartType,\n\tFunnelLegendPlacement,\n\tFunnelStage,\n};\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport type { TooltipValueType } from \"recharts\";\nimport * as RechartsPrimitive from \"recharts\";\nimport { cn } from \"../../lib/cn\";\nimport {\n\ttype ComponentSize,\n\tSizeProvider,\n\tuseComponentSize,\n} from \"./size-context\";\n\n/**\n * Markers use `--color-surface-brand` as a placeholder. Giddaa has no\n * categorical chart palette yet — add `chart-1`…`chart-N` tokens and bind each\n * series (its legend marker and tooltip dot) to its own colour once they exist.\n * Until then any series without an explicit colour paints brand-green.\n */\nconst SERIES_COLOR_PLACEHOLDER = \"var(--color-surface-brand)\";\n\n/** How a precise value is formatted in the tooltip and which prefix/suffix it carries. */\nexport type ChartValueType = \"number\" | \"percentage\" | \"currency\";\n\nfunction formatChartValue(\n\tvalue: TooltipValueType | undefined,\n\ttype: ChartValueType,\n) {\n\tif (Array.isArray(value)) {\n\t\treturn value.join(\", \");\n\t}\n\n\tif (typeof value !== \"number\") {\n\t\treturn value == null ? \"\" : String(value);\n\t}\n\n\tswitch (type) {\n\t\tcase \"currency\":\n\t\t\treturn `₦${value.toLocaleString(\"en-NG\")}`;\n\t\tcase \"percentage\":\n\t\t\treturn `${value.toLocaleString(\"en-NG\", {\n\t\t\t\tminimumFractionDigits: 1,\n\t\t\t\tmaximumFractionDigits: 1,\n\t\t\t})}%`;\n\t\tdefault:\n\t\t\treturn value.toLocaleString(\"en-NG\");\n\t}\n}\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const;\ntype TooltipNameType = number | string;\n\nexport type ChartConfig = Record<\n\tstring,\n\t{\n\t\tlabel?: React.ReactNode;\n\t\ticon?: React.ComponentType;\n\t} & (\n\t\t| { color?: string; theme?: never }\n\t\t| { color?: never; theme: Record<keyof typeof THEMES, string> }\n\t)\n>;\n\ntype ChartContextProps = {\n\tconfig: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n\tconst context = React.useContext(ChartContext);\n\n\tif (!context) {\n\t\tthrow new Error(\"useChart must be used within a <ChartContainer />\");\n\t}\n\n\treturn context;\n}\n\n/**\n * Shared chart frame — the chrome that surrounds the plot of any chart type\n * (bar, line, area, pie). These are presentational, domain-free, and size-aware:\n * a `size` flows through `SizeProvider` so the plot and its labels can scale\n * with the card. Compose them with the plot primitives:\n *\n * <ChartCard size=\"md\">\n * <ChartHeader>\n * <ChartTitle>Revenue Overview</ChartTitle>\n * <ChartDescription>Monthly revenue · Jan–Jul</ChartDescription>\n * </ChartHeader>\n * <ChartContainer config={config}>{/* recharts plot *\\/}</ChartContainer>\n * </ChartCard>\n */\nconst chartCardVariants = cva(\n\t\"flex w-full min-w-0 flex-col rounded-2xl border border-line-subtle bg-surface-raised text-fg-primary shadow-1\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"gap-3 p-4\",\n\t\t\t\tmd: \"gap-4 p-5\",\n\t\t\t\tlg: \"gap-5 p-6\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { size: \"md\" },\n\t},\n);\n\nfunction ChartCard({\n\tclassName,\n\tsize,\n\tchildren,\n\t...props\n}: React.ComponentProps<\"section\"> & { size?: ComponentSize }) {\n\tconst resolvedSize = useComponentSize(size);\n\n\treturn (\n\t\t<SizeProvider size={resolvedSize}>\n\t\t\t<section\n\t\t\t\tdata-slot=\"chart-card\"\n\t\t\t\tclassName={cn(chartCardVariants({ size: resolvedSize }), className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</section>\n\t\t</SizeProvider>\n\t);\n}\n\nfunction ChartHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"chart-header\"\n\t\t\tclassName={cn(\"flex min-w-0 flex-col gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst chartTitleVariants = cva(\"min-w-0 font-bold text-fg-primary\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-gdt-md\",\n\t\t\tmd: \"text-gdt-lg\",\n\t\t\tlg: \"text-gdt-h5\",\n\t\t},\n\t},\n\tdefaultVariants: { size: \"md\" },\n});\n\nfunction ChartTitle({\n\tclassName,\n\tsize,\n\t...props\n}: React.ComponentProps<\"h3\"> & { size?: ComponentSize }) {\n\tconst resolvedSize = useComponentSize(size);\n\n\treturn (\n\t\t<h3\n\t\t\tdata-slot=\"chart-title\"\n\t\t\tclassName={cn(chartTitleVariants({ size: resolvedSize }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst chartDescriptionVariants = cva(\"min-w-0 font-normal text-fg-secondary\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-gdt-xs\",\n\t\t\tmd: \"text-gdt-sm\",\n\t\t\tlg: \"text-gdt-sm\",\n\t\t},\n\t},\n\tdefaultVariants: { size: \"md\" },\n});\n\nfunction ChartDescription({\n\tclassName,\n\tsize,\n\t...props\n}: React.ComponentProps<\"p\"> & { size?: ComponentSize }) {\n\tconst resolvedSize = useComponentSize(size);\n\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"chart-description\"\n\t\t\tclassName={cn(\n\t\t\t\tchartDescriptionVariants({ size: resolvedSize }),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ChartContainer({\n\tid,\n\tclassName,\n\tchildren,\n\tconfig,\n\tinitialDimension = INITIAL_DIMENSION,\n\t...props\n}: React.ComponentProps<\"div\"> & {\n\tconfig: ChartConfig;\n\tchildren: React.ComponentProps<\n\t\ttypeof RechartsPrimitive.ResponsiveContainer\n\t>[\"children\"];\n\tinitialDimension?: {\n\t\twidth: number;\n\t\theight: number;\n\t};\n}) {\n\tconst uniqueId = React.useId();\n\tconst chartId = `chart-${id ?? uniqueId.replace(/:/g, \"\")}`;\n\n\treturn (\n\t\t<ChartContext.Provider value={{ config }}>\n\t\t\t<div\n\t\t\t\tdata-slot=\"chart\"\n\t\t\t\tdata-chart={chartId}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<ChartStyle id={chartId} config={config} />\n\t\t\t\t<RechartsPrimitive.ResponsiveContainer\n\t\t\t\t\tinitialDimension={initialDimension}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</RechartsPrimitive.ResponsiveContainer>\n\t\t\t</div>\n\t\t</ChartContext.Provider>\n\t);\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n\tconst colorConfig = Object.entries(config).filter(\n\t\t([, config]) => config.theme ?? config.color,\n\t);\n\n\tif (!colorConfig.length) {\n\t\treturn null;\n\t}\n\n\tconst styleContent = Object.entries(THEMES)\n\t\t.map(\n\t\t\t([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n\t.map(([key, itemConfig]) => {\n\t\tconst color =\n\t\t\titemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n\t\t\titemConfig.color;\n\t\treturn color ? ` --color-${key}: ${color};` : null;\n\t})\n\t.join(\"\\n\")}\n}\n`,\n\t\t)\n\t\t.join(\"\\n\");\n\n\treturn <style>{styleContent}</style>;\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\n/**\n * Hover tooltip for a chart data point. It surfaces a single precise value with\n * type-appropriate formatting — grouped integers, percentages, or ₦-prefixed\n * currency — sitting on an elevated overlay (bg-surface-overlay, Shadow-2,\n * 1px border-subtle) so users can read exact figures without leaving the chart.\n *\n * Anatomy: series dot · metric label · hero value · period caption.\n */\nconst chartTooltipVariants = cva(\n\t\"flex flex-col bg-surface-overlay border border-line-subtle shadow-2\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\txs: \"gap-0.5 rounded-md p-2\",\n\t\t\t\tsm: \"gap-0.5 rounded-md p-2.5\",\n\t\t\t\tmd: \"gap-1 rounded-lg p-3\",\n\t\t\t\tlg: \"gap-1 rounded-xl p-3.5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tsize: \"md\",\n\t\t},\n\t},\n);\n\nconst chartTooltipDotVariants = cva(\"shrink-0 rounded-full\", {\n\tvariants: {\n\t\tsize: {\n\t\t\txs: \"size-1.5\",\n\t\t\tsm: \"size-2\",\n\t\t\tmd: \"size-2.5\",\n\t\t\tlg: \"size-2.5\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tsize: \"md\",\n\t},\n});\n\nconst chartTooltipLabelVariants = cva(\"font-medium text-fg-secondary\", {\n\tvariants: {\n\t\tsize: {\n\t\t\txs: \"text-gdt-xs\",\n\t\t\tsm: \"text-gdt-xs\",\n\t\t\tmd: \"text-gdt-sm\",\n\t\t\tlg: \"text-gdt-sm\",\n\t\t},\n\t},\n\tdefaultVariants: { size: \"md\" },\n});\n\nconst chartTooltipValueVariants = cva(\n\t\"font-extrabold text-fg-primary tabular-nums\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\txs: \"text-gdt-sm\",\n\t\t\t\tsm: \"text-gdt-md\",\n\t\t\t\tmd: \"text-gdt-lg\",\n\t\t\t\tlg: \"text-gdt-xl\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { size: \"md\" },\n\t},\n);\n\nfunction ChartTooltipContent({\n\tactive,\n\tpayload,\n\tclassName,\n\thideIndicator = false,\n\tlabel,\n\tlabelFormatter,\n\tformatter,\n\tcolor,\n\tnameKey,\n\tvalueType = \"number\",\n\tsize = \"md\",\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n\tReact.ComponentProps<\"div\"> & {\n\t\thideIndicator?: boolean;\n\t\tnameKey?: string;\n\t\tvalueType?: ChartValueType;\n\t} & VariantProps<typeof chartTooltipVariants> &\n\tOmit<\n\t\tRechartsPrimitive.DefaultTooltipContentProps<\n\t\t\tTooltipValueType,\n\t\t\tTooltipNameType\n\t\t>,\n\t\t\"accessibilityLayer\"\n\t>) {\n\tconst { config } = useChart();\n\n\tif (!active || !payload?.length) {\n\t\treturn null;\n\t}\n\n\tconst [item] = payload.filter((entry) => entry.type !== \"none\");\n\n\tif (!item) {\n\t\treturn null;\n\t}\n\n\tconst key = `${nameKey ?? item.name ?? item.dataKey ?? \"value\"}`;\n\tconst itemConfig = getPayloadConfigFromPayload(config, item, key);\n\tconst dotColor =\n\t\tcolor ?? item.payload?.fill ?? item.color ?? SERIES_COLOR_PLACEHOLDER;\n\n\t// Metric label — the short name of the series being read, e.g. \"Total Revenue\".\n\tconst metricLabel = itemConfig?.label ?? item.name;\n\t// Hero value — the precise, formatted figure, the visual focus of the tooltip.\n\tconst heroValue = formatter\n\t\t? formatter(item.value, item.name ?? \"\", item, 0, item.payload)\n\t\t: formatChartValue(item.value, valueType);\n\t// Period caption — the time context for the value, e.g. \"March 2026\".\n\tconst periodCaption = labelFormatter\n\t\t? labelFormatter(label, payload)\n\t\t: ((typeof label === \"string\" ? config[label]?.label : null) ?? label);\n\n\treturn (\n\t\t<div className={cn(chartTooltipVariants({ size }), className)}>\n\t\t\t{metricLabel != null && (\n\t\t\t\t<div className=\"flex items-center gap-1.5 [&>svg]:size-3 [&>svg]:shrink-0\">\n\t\t\t\t\t{!hideIndicator &&\n\t\t\t\t\t\t(itemConfig?.icon ? (\n\t\t\t\t\t\t\t<itemConfig.icon />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName={cn(chartTooltipDotVariants({ size }))}\n\t\t\t\t\t\t\t\tstyle={{ backgroundColor: dotColor }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t<span className={cn(chartTooltipLabelVariants({ size }))}>\n\t\t\t\t\t\t{metricLabel}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<p className={cn(chartTooltipValueVariants({ size }))}>{heroValue}</p>\n\t\t\t{periodCaption != null && periodCaption !== \"\" && (\n\t\t\t\t<p className=\"text-gdt-xs text-fg-caption-placeholder\">\n\t\t\t\t\t{periodCaption}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\n/** Marker shape that ties a legend item to its series. */\ntype ChartLegendMarker = \"dot\" | \"square\" | \"line\";\n\nconst chartLegendItemVariants = cva(\n\t\"group/legend-item flex items-center rounded-md leading-none text-fg-primary transition-colors [&>svg]:shrink-0\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"gap-1.5 px-2 py-1 text-gdt-xs [&>svg]:size-3\",\n\t\t\t\tmd: \"gap-2 px-2.5 py-1.5 text-gdt-sm [&>svg]:size-3.5\",\n\t\t\t},\n\t\t\tinteractive: {\n\t\t\t\ttrue: \"cursor-pointer outline-none hover:bg-surface-raised focus-visible:bg-surface-raised\",\n\t\t\t\tfalse: \"\",\n\t\t\t},\n\t\t\tinactive: {\n\t\t\t\ttrue: \"text-fg-caption-placeholder line-through\",\n\t\t\t\tfalse: \"\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tsize: \"md\",\n\t\t\tinteractive: false,\n\t\t\tinactive: false,\n\t\t},\n\t},\n);\n\nconst chartLegendMarkerSizeVariants = cva(\"shrink-0\", {\n\tvariants: {\n\t\tmarker: {\n\t\t\tdot: \"rounded-full\",\n\t\t\tsquare: \"rounded-[2px]\",\n\t\t\tline: \"rounded-full\",\n\t\t},\n\t\tsize: {\n\t\t\tsm: \"\",\n\t\t\tmd: \"\",\n\t\t},\n\t},\n\tcompoundVariants: [\n\t\t{ marker: [\"dot\", \"square\"], size: \"sm\", className: \"size-2\" },\n\t\t{ marker: [\"dot\", \"square\"], size: \"md\", className: \"size-2.5\" },\n\t\t{ marker: \"line\", size: \"sm\", className: \"h-[3px] w-3\" },\n\t\t{ marker: \"line\", size: \"md\", className: \"h-[3px] w-3.5\" },\n\t],\n\tdefaultVariants: { marker: \"dot\", size: \"md\" },\n});\n\n/**\n * A shared legend for all chart types. Each item pairs a series marker with a\n * label and can be toggled to hide or show its series — the inactive state mutes\n * the marker and strikes through the label. Items compose into horizontal rows\n * or vertical columns, in two sizes, with dot, square, or line markers.\n *\n * Toggling: pass `onToggle` to make items interactive. Inactive items are read\n * from each payload entry's `inactive` flag (recharts sets this when wired) or\n * the controlled `inactiveKeys` set.\n */\nfunction ChartLegendContent({\n\tclassName,\n\thideIcon = false,\n\tpayload,\n\tverticalAlign = \"bottom\",\n\tnameKey,\n\tmarker = \"dot\",\n\tsize = \"md\",\n\torientation = \"horizontal\",\n\tinactiveKeys,\n\tonToggle,\n}: React.ComponentProps<\"div\"> & {\n\thideIcon?: boolean;\n\tnameKey?: string;\n\tmarker?: ChartLegendMarker;\n\tsize?: \"sm\" | \"md\";\n\torientation?: \"horizontal\" | \"vertical\";\n\tinactiveKeys?: Iterable<string>;\n\tonToggle?: (key: string) => void;\n} & RechartsPrimitive.DefaultLegendContentProps) {\n\tconst { config } = useChart();\n\n\tif (!payload?.length) {\n\t\treturn null;\n\t}\n\n\tconst inactiveSet = inactiveKeys ? new Set(inactiveKeys) : undefined;\n\tconst interactive = Boolean(onToggle);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex\",\n\t\t\t\torientation === \"vertical\"\n\t\t\t\t\t? \"flex-col items-start gap-0.5\"\n\t\t\t\t\t: \"flex-row flex-wrap items-center justify-center gap-x-1 gap-y-0.5\",\n\t\t\t\tverticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{payload\n\t\t\t\t.filter((item) => item.type !== \"none\")\n\t\t\t\t.map((item, index) => {\n\t\t\t\t\tconst key = `${nameKey ?? item.dataKey ?? \"value\"}`;\n\t\t\t\t\tconst itemKey = `${item.dataKey ?? item.value ?? index}`;\n\t\t\t\t\tconst itemConfig = getPayloadConfigFromPayload(config, item, key);\n\t\t\t\t\tconst inactive =\n\t\t\t\t\t\t(inactiveSet?.has(key) ?? false) || Boolean(item.inactive);\n\t\t\t\t\tconst markerColor = inactive\n\t\t\t\t\t\t? \"var(--color-fg-caption-placeholder)\"\n\t\t\t\t\t\t: (item.color ?? SERIES_COLOR_PLACEHOLDER);\n\n\t\t\t\t\tconst content = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{itemConfig?.icon && !hideIcon ? (\n\t\t\t\t\t\t\t\t<itemConfig.icon />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\tchartLegendMarkerSizeVariants({ marker, size }),\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tstyle={{ backgroundColor: markerColor }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{itemConfig?.label ?? item.value}\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\n\t\t\t\t\tif (interactive) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tkey={itemKey}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\taria-pressed={!inactive}\n\t\t\t\t\t\t\t\tonClick={() => onToggle?.(key)}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\tchartLegendItemVariants({ size, interactive, inactive }),\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={itemKey}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\tchartLegendItemVariants({ size, interactive, inactive }),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t</div>\n\t);\n}\n\n/** The size-scaled layout numbers a cartesian chart needs to build axis props. */\ntype CartesianAxisLayout = {\n\ttickMargin: number;\n\ttickFontSize: number;\n\tyAxisWidth: number;\n};\n\n/**\n * Shared `<XAxis>`/`<YAxis>` props — the giddaa cartesian-axis defaults (no tick\n * or axis lines, a size-scaled tick font, and a reserved value-axis width) that\n * every bar and line chart would otherwise repeat per axis. Spread the result\n * onto the recharts axis, then add the chart-specific props (`dataKey`,\n * `domain`, `ticks`, a `width`/`type` override, …):\n *\n * const chart = useBarChartLayout();\n * <XAxis dataKey=\"month\" {...chart.xAxis} />\n * <YAxis domain={[0, 120]} {...chart.yAxis} />\n */\nfunction cartesianAxisProps(layout: CartesianAxisLayout) {\n\tconst tick = { fontSize: layout.tickFontSize };\n\treturn {\n\t\txAxis: {\n\t\t\ttickLine: false,\n\t\t\taxisLine: false,\n\t\t\ttickMargin: layout.tickMargin,\n\t\t\ttick,\n\t\t},\n\t\tyAxis: {\n\t\t\ttickLine: false,\n\t\t\taxisLine: false,\n\t\t\twidth: layout.yAxisWidth,\n\t\t\ttick,\n\t\t},\n\t} as const;\n}\n\nfunction getPayloadConfigFromPayload(\n\tconfig: ChartConfig,\n\tpayload: unknown,\n\tkey: string,\n) {\n\tif (typeof payload !== \"object\" || payload === null) {\n\t\treturn undefined;\n\t}\n\n\tconst payloadPayload =\n\t\t\"payload\" in payload &&\n\t\ttypeof payload.payload === \"object\" &&\n\t\tpayload.payload !== null\n\t\t\t? payload.payload\n\t\t\t: undefined;\n\n\tlet configLabelKey: string = key;\n\n\tif (\n\t\tkey in payload &&\n\t\ttypeof payload[key as keyof typeof payload] === \"string\"\n\t) {\n\t\tconfigLabelKey = payload[key as keyof typeof payload] as string;\n\t} else if (\n\t\tpayloadPayload &&\n\t\tkey in payloadPayload &&\n\t\ttypeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n\t) {\n\t\tconfigLabelKey = payloadPayload[\n\t\t\tkey as keyof typeof payloadPayload\n\t\t] as string;\n\t}\n\n\treturn configLabelKey in config ? config[configLabelKey] : config[key];\n}\n\nexport {\n\tcartesianAxisProps,\n\tChartCard,\n\tChartContainer,\n\tChartDescription,\n\tChartHeader,\n\tChartLegend,\n\tChartLegendContent,\n\tChartStyle,\n\tChartTitle,\n\tChartTooltip,\n\tChartTooltipContent,\n};\nexport type { CartesianAxisLayout };\n","\"use client\";\n\nimport { createContext, type ReactNode, useContext } from \"react\";\n\ntype ComponentSize = \"sm\" | \"md\" | \"lg\";\n\nconst SizeContext = createContext<ComponentSize | undefined>(undefined);\n\nfunction SizeProvider({\n\tchildren,\n\tsize,\n}: {\n\tchildren: ReactNode;\n\tsize?: ComponentSize | null;\n}) {\n\tif (!size) {\n\t\treturn <>{children}</>;\n\t}\n\n\treturn <SizeContext.Provider value={size}>{children}</SizeContext.Provider>;\n}\n\nfunction useComponentSize(\n\tsize?: ComponentSize | null,\n\tfallback: ComponentSize = \"md\",\n) {\n\tconst inheritedSize = useContext(SizeContext);\n\treturn size ?? inheritedSize ?? fallback;\n}\n\nexport { SizeProvider, useComponentSize, type ComponentSize };\n"],"mappings":"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","names":["cva","Fragment","jsx","config","jsx","jsxs","cva"]}
|
package/dist/index.d.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './accordion.js';
|
|
2
|
-
export { Alert, AlertActions, AlertClose, AlertDescription, AlertProps, AlertTitle, AlertVariant, alertVariants } from './alert.js';
|
|
3
|
-
export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarBadge as AvatarStatus } from './avatar.js';
|
|
4
|
-
export { Badge, badgeVariants } from './badge.js';
|
|
5
|
-
export { BAR_CHART_LAYOUT, BarChartLayout, BarValueLabel, BarValueLabelProps, useBarChartLayout } from './bar-chart.js';
|
|
6
|
-
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from './breadcrumb.js';
|
|
7
|
-
export { BULLET_CHART_LAYOUT, BULLET_RANGE_PALETTE, BulletChart, BulletChartLayout, BulletChartProps, BulletChartSize, BulletChartStatus } from './bullet-chart.js';
|
|
8
|
-
export { Button, ButtonLink, buttonVariants } from './button.js';
|
|
9
|
-
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants } from './button-group.js';
|
|
10
|
-
export { Calendar, CalendarDayButton } from './calendar.js';
|
|
11
|
-
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardProps, CardTitle, cardVariants } from './card.js';
|
|
12
|
-
export { Carousel, CarouselApi, CarouselContent, CarouselIndicator, CarouselItem, CarouselNext, CarouselPrevious, useCarousel } from './carousel.js';
|
|
13
|
-
export { CartesianAxisLayout, ChartCard, ChartConfig, ChartContainer, ChartDescription, ChartHeader, ChartLegend, ChartLegendContent, ChartStyle, ChartTitle, ChartTooltip, ChartTooltipContent, ChartValueType, cartesianAxisProps } from './chart.js';
|
|
14
|
-
export { Checkbox, checkboxVariants } from './checkbox.js';
|
|
15
|
-
export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './collapsible.js';
|
|
16
|
-
export { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxSize, ComboboxTrigger, ComboboxValue, useComboboxAnchor } from './combobox.js';
|
|
17
|
-
export { DatePicker, DatePickerProps, DateRangePicker, DateRangePickerProps } from './date-picker.js';
|
|
18
|
-
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, dialogContentVariants, dialogIconVariants } from './dialog.js';
|
|
19
|
-
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSize, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from './dropdown-menu.js';
|
|
20
|
-
export { Dropzone, DropzoneArea, DropzoneDescription, DropzoneIcon, DropzoneInput, DropzoneTitle, DropzoneTrigger, useDropzoneContext } from './dropzone.js';
|
|
21
|
-
export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from './empty-state.js';
|
|
22
|
-
export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle } from './field.js';
|
|
23
|
-
export { FUNNEL_CHART_LAYOUT, FUNNEL_CHART_PALETTE, FunnelChart, FunnelChartLayout, FunnelChartProps, FunnelChartSize, FunnelChartType, FunnelLegendPlacement, FunnelStage } from './funnel-chart.js';
|
|
24
|
-
export { Input, InputSize, inputVariants } from './input.js';
|
|
25
|
-
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea } from './input-group.js';
|
|
26
|
-
export { InputComponentSize, InputSizeProvider, useInputComponentSize } from './input-size-context.js';
|
|
27
|
-
export { Item, ItemLabel, ItemValue } from './item.js';
|
|
28
|
-
export { KpiCard, KpiCardLinkOutIcon, KpiCardTitle, KpiCardTrend, KpiCardTrendCaption, KpiCardTrendValue, KpiCardValue, KpiCardValueSkeleton, kpiCardTrendVariants } from './kpi-card.js';
|
|
29
|
-
export { Label } from './label.js';
|
|
30
|
-
export { LINE_CHART_LAYOUT, LineChartLayout, LineChartSize, toComponentSize, useLineChartLayout } from './line-chart.js';
|
|
31
|
-
export { NumberInput, NumberInputControl, NumberInputFormatPreset, numberInputFormatPresets } from './number-input.js';
|
|
32
|
-
export { DashboardHeader, DashboardHeaderActions, DashboardHeaderDescription, DashboardHeaderGroup, DashboardHeaderTitle } from './page-header.js';
|
|
33
|
-
export { Pagination, PaginationButton, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from './pagination.js';
|
|
34
|
-
export { PasswordInput } from './password-input.js';
|
|
35
|
-
export { PhoneInput, PhoneInputProps } from './phone-input.js';
|
|
36
|
-
export { PhotoGallery, PhotoGalleryFullscreen, PhotoGalleryFullscreenProps, PhotoGalleryImage, PhotoGalleryProps } from './photo-gallery.js';
|
|
37
|
-
export { PIE_CHART_LAYOUT, PIE_CHART_PALETTE, PieCenterLabel, PieCenterLabelProps, PieChartLayout, PieChartLegend, PieChartSize, PieLegendItem, usePieChartLayout } from './pie-chart.js';
|
|
38
|
-
export { Popover, PopoverBody, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverTitle, PopoverTrigger } from './popover.js';
|
|
39
|
-
export { CircularProgress, CircularProgressProps, Progress, ProgressCaption, ProgressIndicator, ProgressLabel, ProgressProps, ProgressSize, ProgressTrack, ProgressValue, circularProgressVariants, progressVariants } from './progress.js';
|
|
40
|
-
export { RadioGroup, RadioGroupItem, radioVariants } from './radio-group.js';
|
|
41
|
-
export { RichTextEditor, RichTextEditorProps } from './rich-text-editor.js';
|
|
42
|
-
export { SearchInput } from './search-input.js';
|
|
43
|
-
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectSize, SelectTrigger, SelectValue } from './select.js';
|
|
44
|
-
export { Separator } from './separator.js';
|
|
45
|
-
export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from './sheet.js';
|
|
46
|
-
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar } from './sidebar.js';
|
|
47
|
-
export { ComponentSize, SizeProvider, useComponentSize } from './size-context.js';
|
|
48
|
-
export { Skeleton } from './skeleton.js';
|
|
49
|
-
export { SPARKLINE_LAYOUT, Sparkline, SparklineProps, SparklineSize, SparklineTrend, SparklineType } from './sparkline.js';
|
|
50
|
-
export { Stepper, StepperDescription, StepperIndicator, StepperItem, StepperMeta, StepperOrientation, StepperSeparator, StepperState, StepperTitle } from './stepper.js';
|
|
51
|
-
export { Switch, switchVariants } from './switch.js';
|
|
52
|
-
export { TabList, TabListItem } from './tab-list.js';
|
|
53
|
-
export { Table, TableBody, TableCaption, TableCell, TableCellCaption, TableCellTitle, TableFooter, TableHead, TableHeader, TableRow } from './table.js';
|
|
54
|
-
export { Tabs, TabsContent, TabsCount, TabsList, TabsTrigger, tabsListVariants } from './tabs.js';
|
|
55
|
-
export { Tag, tagVariants } from './tag.js';
|
|
56
|
-
export { Textarea, TextareaSize, textareaVariants } from './textarea.js';
|
|
57
|
-
export { TimePicker, TimePickerProps } from './time-picker.js';
|
|
58
|
-
export { ToastProvider, toast, toastManager } from './toast.js';
|
|
59
|
-
export { Tooltip, TooltipContent, TooltipTrigger } from './tooltip.js';
|
|
60
|
-
export { TREE_MAP_LAYOUT, TREE_MAP_PALETTE, TreeMap, TreeMapDatum, TreeMapLayout, TreeMapLegendPlacement, TreeMapProps, TreeMapSize } from './tree-map.js';
|
|
61
|
-
export { CheckboxGroup } from '@base-ui/react/checkbox-group';
|
|
62
|
-
export { CountryCode } from 'libphonenumber-js';
|
|
63
|
-
export { DateRange } from 'react-day-picker';
|
|
64
|
-
import 'react';
|
|
65
|
-
import '@base-ui/react/accordion';
|
|
66
|
-
import 'class-variance-authority/types';
|
|
67
|
-
import 'class-variance-authority';
|
|
68
|
-
import '@base-ui/react/avatar';
|
|
69
|
-
import '@base-ui/react/use-render';
|
|
70
|
-
import '@base-ui/react/button';
|
|
71
|
-
import 'embla-carousel-react';
|
|
72
|
-
import 'recharts';
|
|
73
|
-
import '@base-ui/react/checkbox';
|
|
74
|
-
import '@base-ui/react/collapsible';
|
|
75
|
-
import '@base-ui/react';
|
|
76
|
-
import '@base-ui/react/dialog';
|
|
77
|
-
import '@base-ui/react/menu';
|
|
78
|
-
import '@base-ui/react/number-field';
|
|
79
|
-
import '@base-ui/react/popover';
|
|
80
|
-
import '@base-ui/react/progress';
|
|
81
|
-
import '@base-ui/react/radio';
|
|
82
|
-
import '@base-ui/react/radio-group';
|
|
83
|
-
import '@base-ui/react/select';
|
|
84
|
-
import '@base-ui/react/separator';
|
|
85
|
-
import '@base-ui/react/switch';
|
|
86
|
-
import '@base-ui/react/tabs';
|
|
87
|
-
import '@base-ui/react/toast';
|