@hoardodile/ui 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-2BVZEYNW.js +97 -0
- package/dist/chunk-2BVZEYNW.js.map +1 -0
- package/dist/chunk-2DTR6CD5.js +47 -0
- package/dist/chunk-2DTR6CD5.js.map +1 -0
- package/dist/chunk-2HWSCY4T.js +20 -0
- package/dist/chunk-2HWSCY4T.js.map +1 -0
- package/dist/chunk-363CCKQ7.js +75 -0
- package/dist/chunk-363CCKQ7.js.map +1 -0
- package/dist/chunk-3ZQJWBVB.js +30 -0
- package/dist/chunk-3ZQJWBVB.js.map +1 -0
- package/dist/chunk-4D36OO5W.js +277 -0
- package/dist/chunk-4D36OO5W.js.map +1 -0
- package/dist/chunk-4UITFLIN.js +31 -0
- package/dist/chunk-4UITFLIN.js.map +1 -0
- package/dist/chunk-6HAIUXNZ.js +11 -0
- package/dist/chunk-6HAIUXNZ.js.map +1 -0
- package/dist/chunk-7JMMFY67.js +62 -0
- package/dist/chunk-7JMMFY67.js.map +1 -0
- package/dist/chunk-7MWWHI6T.js +1149 -0
- package/dist/chunk-7MWWHI6T.js.map +1 -0
- package/dist/chunk-AEHTAUAQ.js +65 -0
- package/dist/chunk-AEHTAUAQ.js.map +1 -0
- package/dist/chunk-ASRGQ5BD.js +130 -0
- package/dist/chunk-ASRGQ5BD.js.map +1 -0
- package/dist/chunk-BFGOE5AI.js +187 -0
- package/dist/chunk-BFGOE5AI.js.map +1 -0
- package/dist/chunk-BRT25IDQ.js +46 -0
- package/dist/chunk-BRT25IDQ.js.map +1 -0
- package/dist/chunk-BU5DQOPM.js +29 -0
- package/dist/chunk-BU5DQOPM.js.map +1 -0
- package/dist/chunk-BWASOT5X.js +266 -0
- package/dist/chunk-BWASOT5X.js.map +1 -0
- package/dist/chunk-F32V4Z7Q.js +26 -0
- package/dist/chunk-F32V4Z7Q.js.map +1 -0
- package/dist/chunk-F7RHDRRJ.js +24 -0
- package/dist/chunk-F7RHDRRJ.js.map +1 -0
- package/dist/chunk-FH5RNCFR.js +21 -0
- package/dist/chunk-FH5RNCFR.js.map +1 -0
- package/dist/chunk-GKSX5ULZ.js +513 -0
- package/dist/chunk-GKSX5ULZ.js.map +1 -0
- package/dist/chunk-JPFDNRCA.js +26 -0
- package/dist/chunk-JPFDNRCA.js.map +1 -0
- package/dist/chunk-KNPRUZ4H.js +13 -0
- package/dist/chunk-KNPRUZ4H.js.map +1 -0
- package/dist/chunk-KOFWEPPB.js +254 -0
- package/dist/chunk-KOFWEPPB.js.map +1 -0
- package/dist/chunk-M5OJN54O.js +10 -0
- package/dist/chunk-M5OJN54O.js.map +1 -0
- package/dist/chunk-OEVALKQ5.js +51 -0
- package/dist/chunk-OEVALKQ5.js.map +1 -0
- package/dist/chunk-OW5FWLPH.js +33 -0
- package/dist/chunk-OW5FWLPH.js.map +1 -0
- package/dist/chunk-POX7TXBH.js +41 -0
- package/dist/chunk-POX7TXBH.js.map +1 -0
- package/dist/chunk-PWJBHUM2.js +58 -0
- package/dist/chunk-PWJBHUM2.js.map +1 -0
- package/dist/chunk-QGMDWGJT.js +23 -0
- package/dist/chunk-QGMDWGJT.js.map +1 -0
- package/dist/chunk-QGTQQNUL.js +36 -0
- package/dist/chunk-QGTQQNUL.js.map +1 -0
- package/dist/chunk-SAY52ZKI.js +152 -0
- package/dist/chunk-SAY52ZKI.js.map +1 -0
- package/dist/chunk-SKDPGSRL.js +166 -0
- package/dist/chunk-SKDPGSRL.js.map +1 -0
- package/dist/chunk-T56ARCUK.js +38 -0
- package/dist/chunk-T56ARCUK.js.map +1 -0
- package/dist/chunk-TDDHQZ62.js +227 -0
- package/dist/chunk-TDDHQZ62.js.map +1 -0
- package/dist/chunk-TMQ5OMBK.js +29 -0
- package/dist/chunk-TMQ5OMBK.js.map +1 -0
- package/dist/chunk-UEVND7AS.js +23 -0
- package/dist/chunk-UEVND7AS.js.map +1 -0
- package/dist/chunk-UPWHCG4S.js +40 -0
- package/dist/chunk-UPWHCG4S.js.map +1 -0
- package/dist/chunk-VWUNF7VX.js +3 -0
- package/dist/chunk-VWUNF7VX.js.map +1 -0
- package/dist/chunk-WI6O7GZK.js +45 -0
- package/dist/chunk-WI6O7GZK.js.map +1 -0
- package/dist/chunk-WVEK3WCX.js +21 -0
- package/dist/chunk-WVEK3WCX.js.map +1 -0
- package/dist/chunk-XBPQEZES.js +48 -0
- package/dist/chunk-XBPQEZES.js.map +1 -0
- package/dist/chunk-ZYAGKKR7.js +142 -0
- package/dist/chunk-ZYAGKKR7.js.map +1 -0
- package/dist/components/alert.js +2 -21
- package/dist/components/alert.js.map +1 -1
- package/dist/components/app-dialog.js +10 -654
- package/dist/components/app-dialog.js.map +1 -1
- package/dist/components/badge.js +2 -23
- package/dist/components/badge.js.map +1 -1
- package/dist/components/breadcrumb.js +5 -504
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button.js +3 -76
- package/dist/components/button.js.map +1 -1
- package/dist/components/caption-bar.js +7 -521
- package/dist/components/caption-bar.js.map +1 -1
- package/dist/components/checkbox.js +4 -74
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/chip-button.js +4 -85
- package/dist/components/chip-button.js.map +1 -1
- package/dist/components/close-confirm-dialog.js +12 -662
- package/dist/components/close-confirm-dialog.js.map +1 -1
- package/dist/components/color-picker.js +7 -533
- package/dist/components/color-picker.js.map +1 -1
- package/dist/components/combobox.js +15 -937
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/confirm-by-typing-dialog.js +12 -669
- package/dist/components/confirm-by-typing-dialog.js.map +1 -1
- package/dist/components/confirm-dialog.js +11 -637
- package/dist/components/confirm-dialog.js.map +1 -1
- package/dist/components/count-badge.js +2 -21
- package/dist/components/count-badge.js.map +1 -1
- package/dist/components/dialog.js +8 -569
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dropdown-menu.js +9 -1007
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/dropdown-select.js +9 -883
- package/dist/components/dropdown-select.js.map +1 -1
- package/dist/components/empty.js +2 -21
- package/dist/components/empty.js.map +1 -1
- package/dist/components/filter-rail.js +7 -145
- package/dist/components/filter-rail.js.map +1 -1
- package/dist/components/fixed-action-bar.js +2 -21
- package/dist/components/fixed-action-bar.js.map +1 -1
- package/dist/components/font-picker.js +11 -589
- package/dist/components/font-picker.js.map +1 -1
- package/dist/components/form.js +9 -66
- package/dist/components/form.js.map +1 -1
- package/dist/components/icon-tile.js +3 -43
- package/dist/components/icon-tile.js.map +1 -1
- package/dist/components/icon-toggle.js +3 -43
- package/dist/components/icon-toggle.js.map +1 -1
- package/dist/components/icon.js +3 -47
- package/dist/components/icon.js.map +1 -1
- package/dist/components/image-crop-panel.js +19 -775
- package/dist/components/image-crop-panel.js.map +1 -1
- package/dist/components/image-cropper.js +1 -164
- package/dist/components/image-cropper.js.map +1 -1
- package/dist/components/input-group.js +6 -268
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/input.js +3 -58
- package/dist/components/input.js.map +1 -1
- package/dist/components/label.js +3 -38
- package/dist/components/label.js.map +1 -1
- package/dist/components/list-empty-row.js +2 -21
- package/dist/components/list-empty-row.js.map +1 -1
- package/dist/components/management-empty.js +2 -21
- package/dist/components/management-empty.js.map +1 -1
- package/dist/components/management-skeleton.js +4 -59
- package/dist/components/management-skeleton.js.map +1 -1
- package/dist/components/meta-chip.js +2 -21
- package/dist/components/meta-chip.js.map +1 -1
- package/dist/components/mobile-drawer.js +7 -268
- package/dist/components/mobile-drawer.js.map +1 -1
- package/dist/components/page-header.js +3 -42
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/page-scaffold.js +5 -76
- package/dist/components/page-scaffold.js.map +1 -1
- package/dist/components/pagination-bar.js +13 -617
- package/dist/components/pagination-bar.js.map +1 -1
- package/dist/components/pagination.js +6 -684
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/panel-toolbar.js +11 -716
- package/dist/components/panel-toolbar.js.map +1 -1
- package/dist/components/pill-tabs.js +2 -21
- package/dist/components/pill-tabs.js.map +1 -1
- package/dist/components/plugin-download-consent.js +13 -663
- package/dist/components/plugin-download-consent.js.map +1 -1
- package/dist/components/popover.js +5 -242
- package/dist/components/popover.js.map +1 -1
- package/dist/components/preview-card.js +2 -21
- package/dist/components/preview-card.js.map +1 -1
- package/dist/components/progress.js +2 -20
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.js +2 -21
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/scroll-area.js +2 -21
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/search-field.js +6 -590
- package/dist/components/search-field.js.map +1 -1
- package/dist/components/secondary-stat.js +3 -40
- package/dist/components/secondary-stat.js.map +1 -1
- package/dist/components/section-header.js +3 -43
- package/dist/components/section-header.js.map +1 -1
- package/dist/components/section-label.js +3 -44
- package/dist/components/section-label.js.map +1 -1
- package/dist/components/section-tabs.js +2 -21
- package/dist/components/section-tabs.js.map +1 -1
- package/dist/components/separator.js +3 -47
- package/dist/components/separator.js.map +1 -1
- package/dist/components/sheet.js +8 -467
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +24 -1047
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/skeleton.js +3 -39
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.js +2 -21
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sortable-chip-list.js +2 -21
- package/dist/components/sortable-chip-list.js.map +1 -1
- package/dist/components/special-tag-surface.js +3 -531
- package/dist/components/special-tag-surface.js.map +1 -1
- package/dist/components/spinner.js +3 -63
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/surface.js +3 -49
- package/dist/components/surface.js.map +1 -1
- package/dist/components/switch.js +3 -51
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.js +2 -20
- package/dist/components/table.js.map +1 -1
- package/dist/components/tag-chip.js +6 -617
- package/dist/components/tag-chip.js.map +1 -1
- package/dist/components/textarea.js +3 -56
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/toast.js +8 -809
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle.js +2 -20
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/tooltip.js +3 -80
- package/dist/components/tooltip.js.map +1 -1
- package/dist/hooks/use-dialog-footer-actions.js +1 -9
- package/dist/hooks/use-dialog-footer-actions.js.map +1 -1
- package/dist/hooks/use-form-field.js +1 -34
- package/dist/hooks/use-form-field.js.map +1 -1
- package/dist/hooks/use-mobile.js +2 -27
- package/dist/hooks/use-mobile.js.map +1 -1
- package/dist/hooks/useMobileBackToClose.js +3 -232
- package/dist/hooks/useMobileBackToClose.js.map +1 -1
- package/dist/icons/actions.js +4 -524
- package/dist/icons/actions.js.map +1 -1
- package/dist/icons/icon-style.js +1 -49
- package/dist/icons/icon-style.js.map +1 -1
- package/dist/icons/marks.js +1 -46
- package/dist/icons/marks.js.map +1 -1
- package/dist/icons/registry.js +2 -1194
- package/dist/icons/registry.js.map +1 -1
- package/dist/index.js +10 -651
- package/dist/index.js.map +1 -1
- package/dist/lib/colors.js +1 -63
- package/dist/lib/colors.js.map +1 -1
- package/dist/lib/merge-config.js +1 -18
- package/dist/lib/merge-config.js.map +1 -1
- package/dist/lib/pagination.js +1 -24
- package/dist/lib/pagination.js.map +1 -1
- package/dist/lib/tag-surface.js +5 -613
- package/dist/lib/tag-surface.js.map +1 -1
- package/dist/lib/utils.js +2 -24
- package/dist/lib/utils.js.map +1 -1
- package/dist/res-card-template/format.js +1 -21
- package/dist/res-card-template/format.js.map +1 -1
- package/dist/res-card-template/icon.js +1 -39
- package/dist/res-card-template/icon.js.map +1 -1
- package/dist/res-card-template/index.js +3 -329
- package/dist/res-card-template/index.js.map +1 -1
- package/dist/res-card-template/template.js +3 -331
- package/dist/res-card-template/template.js.map +1 -1
- package/dist/viewport.js +1 -11
- package/dist/viewport.js.map +1 -1
- package/package.json +3 -3
- package/src/components/image-crop-panel.dist.test.tsx +54 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/merge-config.ts","../../src/lib/utils.ts","../../src/components/button.tsx","../../src/icons/marks.tsx","../../src/components/checkbox.tsx","../../src/components/separator.tsx","../../src/components/filter-rail.tsx"],"names":["ButtonPrimitive","jsx","CheckboxPrimitive","SeparatorPrimitive"],"mappings":"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","file":"filter-rail.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\"\n\n// The app's `@theme inline` tokens (theme.css) generate utility names\n// tailwind-merge doesn't know, so it misclassifies them — e.g. `text-ui` is\n// parsed as a text color and dropped next to any `text-*` color. The default\n// class groups are theme-backed, so extending the theme (keys mirror the v4\n// token namespaces one-to-one) registers every custom utility with correct\n// conflict semantics. merge-config.test.ts pins this list against theme.css.\nexport const mergeTheme = {\n\ttext: [\"tiny\", \"ui\", \"doc\", \"doc-title\", \"doc-heading\", \"quote\"],\n\tspacing: [\"chip\", \"control\", \"nav\", \"sidebar\", \"panel\"],\n\ttracking: [\"label\"],\n\tshadow: [\"card\", \"dialog\"],\n\tcontainer: [\"reading\", \"medium\", \"content\"],\n\tfont: [\"doc\", \"heading\"],\n\tease: [\"standard\"],\n\tanimate: [\"skel\", \"pop\"],\n} as const\n\nexport const twMerge = extendTailwindMerge({\n\textend: { theme: mergeTheme },\n})\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"./merge-config\"\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs))\n}\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg text-ui font-medium whitespace-nowrap outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary px-4! text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background shadow-xs hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n danger:\n \"bg-[color-mix(in_oklab,var(--destructive),black_12%)] text-white hover:bg-[color-mix(in_oklab,var(--destructive),black_4%)] focus-visible:border-destructive/40 focus-visible:ring-destructive/20 disabled:bg-destructive/10 disabled:text-muted-foreground dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-control gap-2 px-3 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-2 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-chip gap-2 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\",\n lg: \"h-10 gap-2 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n icon: \"size-9\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\":\n \"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n active,\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props &\n VariantProps<typeof buttonVariants> & {\n /** Latched toggle state: accent fill, hover pinned so an active\n button never shifts. Callers keep choosing the matching aria\n attribute (`aria-pressed` / `aria-expanded`). */\n active?: boolean\n }) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(\n buttonVariants({ variant, size, className }),\n active && \"bg-accent text-accent-foreground hover:bg-accent\"\n )}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","/**\n * Local utility marks — the three plain glyphs Solar's vocabulary lacks\n * (its ✓/×/+ only exist inside Circle/Square containers, whose marks occupy\n * barely a third of the box and go muddy below 16px). These are drawn\n * in-house for the spots where a bare mark is the whole meaning: checkbox\n * ticks, selected badges, pill clears, add affordances.\n *\n * Check and Cross are strokes in Solar's language (24 viewBox, round caps)\n * at 2 units — diagonals anti-alias gracefully at any tier. Plus is a\n * filled cross instead: its pure orthogonal edges land on integer pixels\n * at the md tier (3-unit arms render as a crisp 2px bar at 16px), where a\n * 1.33px stroke would straddle pixel boundaries and blur. Weight-insensitive:\n * no tone layer, no weight variants. Original geometry — not derived\n * from Solar assets.\n *\n * Marks ride the same `mode` channel as registry icons (declared, ignored):\n * a check is a check in every weight.\n */\nimport type { IconMode } from \"./icon-style.ts\"\n\ntype MarkProps = {\n\tclassName?: string\n\tmode?: IconMode\n}\n\nfunction Mark({\n\td,\n\tfilled,\n\tclassName,\n}: MarkProps & { d: string; filled?: boolean }) {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tclassName={className}\n\t\t>\n\t\t\t{filled ? (\n\t\t\t\t<path d={d} fill=\"currentColor\" />\n\t\t\t) : (\n\t\t\t\t<path\n\t\t\t\t\td={d}\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n\n/** Plain ✓ — checkbox ticks, selected badges. */\nexport function Check(props: MarkProps) {\n\treturn <Mark {...props} d=\"M5 12.8l4.7 4.7L19 7.2\" />\n}\n\n/** Plain × — pill and chip clears. */\nexport function Cross(props: MarkProps) {\n\treturn <Mark {...props} d=\"M6 6l12 12M18 6L6 18\" />\n}\n\n/** Plain + — add affordances. Filled cross, 3-unit arms spanning 5–19. */\nexport function Plus(props: MarkProps) {\n\treturn (\n\t\t<Mark\n\t\t\t{...props}\n\t\t\tfilled\n\t\t\td=\"M10.5 5h3v5.5H19v3h-5.5V19h-3v-5.5H5v-3h5.5V5Z\"\n\t\t/>\n\t)\n}\n","\"use client\"\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\nimport { Check } from \"@hoardodile/ui/icons/marks\"\n\nfunction Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer relative flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-sm bg-muted outline-none group-has-disabled/field:opacity-50 focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:bg-destructive/20 aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-checked:bg-primary data-checked:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current [&>svg]:size-3\"\n >\n <Check />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"@hoardodile/ui/lib/utils\"\n\nexport type SeparatorSize = \"hairline\" | \"seam\"\n\n/**\n * Horizontal/vertical divider: hairlines are 1px and quiet; the 2px\n * `seam` tier marks only structural seams (tab bars, panel sections,\n * pinned action bars).\n */\nfunction Separator({\n className,\n orientation = \"horizontal\",\n size = \"hairline\",\n ...props\n}: SeparatorPrimitive.Props & {\n readonly size?: SeparatorSize\n}) {\n const thickness =\n size === \"seam\"\n ? \"data-horizontal:h-0.5 data-vertical:w-0.5\"\n : \"data-horizontal:h-px data-vertical:w-px\"\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:w-full data-vertical:self-stretch\",\n thickness,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import { Button } from \"@hoardodile/ui/components/button\"\nimport { Checkbox } from \"@hoardodile/ui/components/checkbox\"\nimport { Separator } from \"@hoardodile/ui/components/separator\"\nimport { cn } from \"@hoardodile/ui/lib/utils\"\nimport { type ReactNode, useId } from \"react\"\n\ntype FilterRailProps = {\n\t/** Rail title, e.g. \"Filters\". */\n\treadonly title: ReactNode\n\t/** Header link that resets every staged filter (applies immediately). */\n\treadonly clearAllLabel: ReactNode\n\treadonly onClearAll: () => void\n\t/** Footer apply button label, e.g. \"Show 24 resources\". */\n\treadonly resultLabel: ReactNode\n\treadonly onApply: () => void\n\t/** When false (live-search mode) the footer apply button is omitted. */\n\treadonly showApply?: boolean\n\t/**\n\t * Live-search toggle row above the apply button — checked means every\n\t * filter change applies immediately instead of staging. Rendered when\n\t * provided.\n\t */\n\treadonly liveSearch?: boolean\n\treadonly onLiveSearchChange?: (live: boolean) => void\n\treadonly liveSearchLabel?: ReactNode\n\treadonly children: ReactNode\n\treadonly className?: string\n}\n\n/**\n * Filter rail: the faceted filter surface on index pages. Lives in the\n * AppShell's right panel column on wide screens and in a route-owned\n * drawer below the panel breakpoint, so it always fills its parent's\n * height and scrolls its own sections.\n */\nexport function FilterRail(props: FilterRailProps) {\n\tconst {\n\t\ttitle,\n\t\tclearAllLabel,\n\t\tonClearAll,\n\t\tresultLabel,\n\t\tonApply,\n\t\tshowApply = true,\n\t\tliveSearch,\n\t\tonLiveSearchChange,\n\t\tliveSearchLabel,\n\t\tchildren,\n\t\tclassName,\n\t} = props\n\tconst liveToggleId = useId()\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex h-full w-full flex-col overflow-hidden\", className)}\n\t\t>\n\t\t\t<div className=\"flex items-baseline px-5 pt-5\">\n\t\t\t\t<span className=\"text-xs font-semibold tracking-label uppercase text-foreground\">\n\t\t\t\t\t{title}\n\t\t\t\t</span>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"ml-auto cursor-pointer text-xs text-muted-foreground hover:text-secondary-foreground\"\n\t\t\t\t\tdata-testid=\"filter-rail-clear-all\"\n\t\t\t\t\tonClick={onClearAll}\n\t\t\t\t>\n\t\t\t\t\t{clearAllLabel}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className=\"flex-1 overflow-y-auto px-5 pb-5\">{children}</div>\n\t\t\t{liveSearch !== undefined ? (\n\t\t\t\t<>\n\t\t\t\t\t<Separator size=\"seam\" />\n\t\t\t\t\t<div className=\"mb-3 flex items-center justify-between px-5 pt-3\">\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\tid={liveToggleId}\n\t\t\t\t\t\t\t\tchecked={liveSearch}\n\t\t\t\t\t\t\t\tonCheckedChange={(v) => onLiveSearchChange?.(v === true)}\n\t\t\t\t\t\t\t\tdata-testid=\"live-search-toggle\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\thtmlFor={liveToggleId}\n\t\t\t\t\t\t\t\tclassName=\"cursor-pointer text-xs text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{liveSearchLabel}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{showApply ? (\n\t\t\t\t<div className=\"mb-3 px-5\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"w-full justify-center\"\n\t\t\t\t\t\tonClick={onApply}\n\t\t\t\t\t\tdata-testid=\"filter-rail-apply\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resultLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t)\n}\n\ntype FilterRailSectionProps = {\n\t/** Section label (uppercase tracking-label); omitted for the\n\t label-less first panel section. */\n\treadonly label?: ReactNode\n\t/**\n\t * Pad the label and content (`px-5`) while the seam stays full-bleed —\n\t * detail panels whose sections take their own padding without touching\n\t * the edge-to-edge separators.\n\t */\n\treadonly padded?: boolean\n\treadonly children: ReactNode\n}\n\n/** One facet group; sections are separated by 2px structural seams. */\nexport function FilterRailSection(props: FilterRailSectionProps) {\n\tconst { label, children, padded = false } = props\n\treturn (\n\t\t<section className=\"mt-5 first:mt-4 first:pt-0 first:*:data-[slot=separator]:hidden\">\n\t\t\t<Separator size=\"seam\" className=\"mb-4\" />\n\t\t\t<div className={padded ? \"px-5\" : undefined}>\n\t\t\t\t{label !== undefined ? (\n\t\t\t\t\t<div className=\"text-xs font-semibold tracking-label uppercase text-foreground\">\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t{label !== undefined ? (\n\t\t\t\t\t<div className=\"mt-2 flex flex-col\">{children}</div>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</section>\n\t)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/filter-rail.tsx"],"names":[],"mappings":"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","file":"filter-rail.js","sourcesContent":["import { Button } from \"@hoardodile/ui/components/button\"\nimport { Checkbox } from \"@hoardodile/ui/components/checkbox\"\nimport { Separator } from \"@hoardodile/ui/components/separator\"\nimport { cn } from \"@hoardodile/ui/lib/utils\"\nimport { type ReactNode, useId } from \"react\"\n\ntype FilterRailProps = {\n\t/** Rail title, e.g. \"Filters\". */\n\treadonly title: ReactNode\n\t/** Header link that resets every staged filter (applies immediately). */\n\treadonly clearAllLabel: ReactNode\n\treadonly onClearAll: () => void\n\t/** Footer apply button label, e.g. \"Show 24 resources\". */\n\treadonly resultLabel: ReactNode\n\treadonly onApply: () => void\n\t/** When false (live-search mode) the footer apply button is omitted. */\n\treadonly showApply?: boolean\n\t/**\n\t * Live-search toggle row above the apply button — checked means every\n\t * filter change applies immediately instead of staging. Rendered when\n\t * provided.\n\t */\n\treadonly liveSearch?: boolean\n\treadonly onLiveSearchChange?: (live: boolean) => void\n\treadonly liveSearchLabel?: ReactNode\n\treadonly children: ReactNode\n\treadonly className?: string\n}\n\n/**\n * Filter rail: the faceted filter surface on index pages. Lives in the\n * AppShell's right panel column on wide screens and in a route-owned\n * drawer below the panel breakpoint, so it always fills its parent's\n * height and scrolls its own sections.\n */\nexport function FilterRail(props: FilterRailProps) {\n\tconst {\n\t\ttitle,\n\t\tclearAllLabel,\n\t\tonClearAll,\n\t\tresultLabel,\n\t\tonApply,\n\t\tshowApply = true,\n\t\tliveSearch,\n\t\tonLiveSearchChange,\n\t\tliveSearchLabel,\n\t\tchildren,\n\t\tclassName,\n\t} = props\n\tconst liveToggleId = useId()\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex h-full w-full flex-col overflow-hidden\", className)}\n\t\t>\n\t\t\t<div className=\"flex items-baseline px-5 pt-5\">\n\t\t\t\t<span className=\"text-xs font-semibold tracking-label uppercase text-foreground\">\n\t\t\t\t\t{title}\n\t\t\t\t</span>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclassName=\"ml-auto cursor-pointer text-xs text-muted-foreground hover:text-secondary-foreground\"\n\t\t\t\t\tdata-testid=\"filter-rail-clear-all\"\n\t\t\t\t\tonClick={onClearAll}\n\t\t\t\t>\n\t\t\t\t\t{clearAllLabel}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className=\"flex-1 overflow-y-auto px-5 pb-5\">{children}</div>\n\t\t\t{liveSearch !== undefined ? (\n\t\t\t\t<>\n\t\t\t\t\t<Separator size=\"seam\" />\n\t\t\t\t\t<div className=\"mb-3 flex items-center justify-between px-5 pt-3\">\n\t\t\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\tid={liveToggleId}\n\t\t\t\t\t\t\t\tchecked={liveSearch}\n\t\t\t\t\t\t\t\tonCheckedChange={(v) => onLiveSearchChange?.(v === true)}\n\t\t\t\t\t\t\t\tdata-testid=\"live-search-toggle\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\thtmlFor={liveToggleId}\n\t\t\t\t\t\t\t\tclassName=\"cursor-pointer text-xs text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{liveSearchLabel}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) : null}\n\t\t\t{showApply ? (\n\t\t\t\t<div className=\"mb-3 px-5\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"w-full justify-center\"\n\t\t\t\t\t\tonClick={onApply}\n\t\t\t\t\t\tdata-testid=\"filter-rail-apply\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resultLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t)\n}\n\ntype FilterRailSectionProps = {\n\t/** Section label (uppercase tracking-label); omitted for the\n\t label-less first panel section. */\n\treadonly label?: ReactNode\n\t/**\n\t * Pad the label and content (`px-5`) while the seam stays full-bleed —\n\t * detail panels whose sections take their own padding without touching\n\t * the edge-to-edge separators.\n\t */\n\treadonly padded?: boolean\n\treadonly children: ReactNode\n}\n\n/** One facet group; sections are separated by 2px structural seams. */\nexport function FilterRailSection(props: FilterRailSectionProps) {\n\tconst { label, children, padded = false } = props\n\treturn (\n\t\t<section className=\"mt-5 first:mt-4 first:pt-0 first:*:data-[slot=separator]:hidden\">\n\t\t\t<Separator size=\"seam\" className=\"mb-4\" />\n\t\t\t<div className={padded ? \"px-5\" : undefined}>\n\t\t\t\t{label !== undefined ? (\n\t\t\t\t\t<div className=\"text-xs font-semibold tracking-label uppercase text-foreground\">\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t\t{label !== undefined ? (\n\t\t\t\t\t<div className=\"mt-2 flex flex-col\">{children}</div>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</section>\n\t)\n}\n"]}
|
|
@@ -1,26 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { cn } from '../chunk-M5OJN54O.js';
|
|
2
|
+
import '../chunk-2HWSCY4T.js';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
|
-
// src/lib/utils.ts
|
|
6
|
-
var mergeTheme = {
|
|
7
|
-
text: ["tiny", "ui", "doc", "doc-title", "doc-heading", "quote"],
|
|
8
|
-
spacing: ["chip", "control", "nav", "sidebar", "panel"],
|
|
9
|
-
tracking: ["label"],
|
|
10
|
-
shadow: ["card", "dialog"],
|
|
11
|
-
container: ["reading", "medium", "content"],
|
|
12
|
-
font: ["doc", "heading"],
|
|
13
|
-
ease: ["standard"],
|
|
14
|
-
animate: ["skel", "pop"]
|
|
15
|
-
};
|
|
16
|
-
var twMerge = extendTailwindMerge({
|
|
17
|
-
extend: { theme: mergeTheme }
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
// src/lib/utils.ts
|
|
21
|
-
function cn(...inputs) {
|
|
22
|
-
return twMerge(clsx(inputs));
|
|
23
|
-
}
|
|
24
5
|
function FixedActionBar(props) {
|
|
25
6
|
return /* @__PURE__ */ jsxs(
|
|
26
7
|
"div",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/
|
|
1
|
+
{"version":3,"sources":["../../src/components/fixed-action-bar.tsx"],"names":[],"mappings":";;;;AAsBO,SAAS,eAAe,KAAA,EAA4B;AAC1D,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACV,wHAAA;AAAA,QACA,KAAA,CAAM;AAAA,OACP;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8BAAA,EACd,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA,KAAA,CAAM,QAAA,KAAa,MAAA,mBACnB,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,SAAA,EAAU,+EAAA;AAAA,YACV,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,CAAA,CAAA;AAAI;AAAA,SACtC,GACG,MACL,CAAA,EACD,CAAA;AAAA,wBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6FAAA,EACb,gBAAM,QAAA,EACR;AAAA;AAAA;AAAA,GACD;AAEF","file":"fixed-action-bar.js","sourcesContent":["import { cn } from \"@hoardodile/ui/lib/utils\"\nimport type { ReactNode } from \"react\"\n\ntype FixedActionBarProps = {\n\treadonly children: ReactNode\n\treadonly className?: string\n\t/**\n\t * 0–100 shows the 2px top progress strip while an upload is staging;\n\t * omit when idle. The track doubles as the seam.\n\t */\n\treadonly progress?: number\n}\n\n/**\n * Fixed bottom action bar for long forms. Pinned to the viewport bottom\n * so the submit control is always reachable, starting after the sidebar\n * on md+; the top progress strip separates it from scrolling content (a\n * quiet muted track when idle, a foreground fill while staging). The\n * inner row mirrors PageScaffold's gutters and centers at `max-w-content`,\n * so the buttons right-align with the page column's edge. Forms using it\n * reserve clearance with bottom padding.\n */\nexport function FixedActionBar(props: FixedActionBarProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed inset-x-0 bottom-0 z-40 bg-background/90 backdrop-blur supports-backdrop-filter:bg-background/60 md:left-sidebar\",\n\t\t\t\tprops.className,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"mx-auto w-full max-w-content\">\n\t\t\t\t<div className=\"h-0.5 bg-muted\">\n\t\t\t\t\t{props.progress !== undefined ? (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"h-full bg-foreground transition-[width] duration-(--duration-2) ease-standard\"\n\t\t\t\t\t\t\tstyle={{ width: `${props.progress}%` }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"mx-auto flex w-full max-w-content items-center justify-end gap-2 px-3 py-4 sm:px-6 lg:px-10\">\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n"]}
|