@octanejs/shadcn 0.0.7 → 0.0.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.
Files changed (37) hide show
  1. package/README.md +170 -3
  2. package/package.json +46 -7
  3. package/src/bases/base-ui/ui/accordion.tsrx +71 -0
  4. package/src/bases/base-ui/ui/alert-dialog.tsrx +149 -0
  5. package/src/bases/base-ui/ui/alert.tsrx +68 -0
  6. package/src/bases/base-ui/ui/aspect-ratio.tsrx +24 -0
  7. package/src/bases/base-ui/ui/avatar.tsrx +89 -0
  8. package/src/bases/base-ui/ui/badge.tsrx +56 -0
  9. package/src/bases/base-ui/ui/breadcrumb.tsrx +109 -0
  10. package/src/bases/base-ui/ui/button.tsrx +69 -0
  11. package/src/bases/base-ui/ui/card.tsrx +76 -0
  12. package/src/bases/base-ui/ui/checkbox.tsrx +43 -0
  13. package/src/bases/base-ui/ui/collapsible.tsrx +25 -0
  14. package/src/bases/base-ui/ui/dialog.tsrx +137 -0
  15. package/src/bases/base-ui/ui/dropdown-menu.tsrx +292 -0
  16. package/src/bases/base-ui/ui/empty.tsrx +88 -0
  17. package/src/bases/base-ui/ui/field.tsrx +201 -0
  18. package/src/bases/base-ui/ui/input.tsrx +28 -0
  19. package/src/bases/base-ui/ui/item.tsrx +163 -0
  20. package/src/bases/base-ui/ui/kbd.tsrx +27 -0
  21. package/src/bases/base-ui/ui/label.tsrx +31 -0
  22. package/src/bases/base-ui/ui/native-select.tsrx +54 -0
  23. package/src/bases/base-ui/ui/pagination.tsrx +125 -0
  24. package/src/bases/base-ui/ui/popover.tsrx +124 -0
  25. package/src/bases/base-ui/ui/progress.tsrx +46 -0
  26. package/src/bases/base-ui/ui/radio-group.tsrx +62 -0
  27. package/src/bases/base-ui/ui/separator.tsrx +34 -0
  28. package/src/bases/base-ui/ui/sheet.tsrx +121 -0
  29. package/src/bases/base-ui/ui/skeleton.tsrx +17 -0
  30. package/src/bases/base-ui/ui/slider.tsrx +111 -0
  31. package/src/bases/base-ui/ui/spinner.tsrx +30 -0
  32. package/src/bases/base-ui/ui/switch.tsrx +43 -0
  33. package/src/bases/base-ui/ui/table.tsrx +85 -0
  34. package/src/bases/base-ui/ui/textarea.tsrx +22 -0
  35. package/src/bases/base-ui/ui/toggle-group.tsrx +124 -0
  36. package/src/bases/base-ui/ui/toggle.tsrx +57 -0
  37. package/src/bases/base-ui/ui/tooltip.tsrx +111 -0
@@ -0,0 +1,111 @@
1
+ // Base UI base tooltip — runs on @octanejs/base-ui's Tooltip.
2
+ //
3
+ // SAME TWO POSITIONING DIFFERENCES AS POPOVER: the transform-origin var is plain
4
+ // `--transform-origin` rather than radix's `--radix-tooltip-content-transform-origin`, and the
5
+ // tree gains a Positioner layer (Portal > Positioner > Popup) which owns the offset.
6
+ //
7
+ // ONE RADIX-ONLY STATE IS DROPPED. The radix base styles `data-[state=delayed-open]:` alongside
8
+ // `data-open:`, because radix distinguishes an immediate open from one that waited out the
9
+ // delay. Base UI publishes only `data-open`/`data-closed` — there is no delayed-open state to
10
+ // match, so those three utilities would be dead weight referencing an attribute that never
11
+ // appears. The `data-open:` variants they duplicate are kept and cover both cases.
12
+ //
13
+ // UNVERIFIED PROVENANCE: class strings come from this package's radix base rather than
14
+ // transcribed from upstream's Base UI source.
15
+ import { createElement, Fragment, type OctaneNode } from 'octane';
16
+ import { Tooltip as TooltipPrimitive } from '@octanejs/base-ui/tooltip';
17
+
18
+ import { cn } from '../../../lib/utils';
19
+
20
+ export interface TooltipProviderProps extends Record<string, unknown> {
21
+ delay?: number;
22
+ }
23
+
24
+ export function TooltipProvider({ delay = 0, ...props }: TooltipProviderProps) @{
25
+ <TooltipPrimitive.Provider data-slot="tooltip-provider" delay={delay} {...props} />
26
+ }
27
+
28
+ export function Tooltip(props: Record<string, unknown>) @{
29
+ <TooltipPrimitive.Root data-slot="tooltip" {...props} />
30
+ }
31
+
32
+ export function TooltipTrigger(props: Record<string, unknown>) @{
33
+ <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />
34
+ }
35
+
36
+ export interface TooltipContentProps extends Record<string, unknown> {
37
+ className?: string;
38
+ sideOffset?: number;
39
+ children?: OctaneNode;
40
+ }
41
+
42
+ export interface BaseUiPositioningProps {
43
+ /** Forwarded to the Positioner; see the note at the top of this file. */
44
+ side?: 'top' | 'right' | 'bottom' | 'left';
45
+ sideOffset?: number;
46
+ align?: 'start' | 'center' | 'end';
47
+ alignOffset?: number;
48
+ anchor?: unknown;
49
+ positionMethod?: 'absolute' | 'fixed';
50
+ collisionBoundary?: unknown;
51
+ collisionPadding?: unknown;
52
+ collisionAvoidance?: unknown;
53
+ arrowPadding?: number;
54
+ sticky?: boolean;
55
+ disableAnchorTracking?: boolean;
56
+ }
57
+
58
+ export function TooltipContent({
59
+ className,
60
+ sideOffset = 0,
61
+ align,
62
+ side,
63
+ alignOffset,
64
+ anchor,
65
+ positionMethod,
66
+ collisionBoundary,
67
+ collisionPadding,
68
+ collisionAvoidance,
69
+ arrowPadding,
70
+ sticky,
71
+ disableAnchorTracking,
72
+ children,
73
+ ...props
74
+ }: TooltipContentProps & BaseUiPositioningProps) {
75
+ return createElement(TooltipPrimitive.Portal, {
76
+ children: createElement(TooltipPrimitive.Positioner, {
77
+ side,
78
+ sideOffset,
79
+ align,
80
+ alignOffset,
81
+ anchor,
82
+ positionMethod,
83
+ collisionBoundary,
84
+ collisionPadding,
85
+ collisionAvoidance,
86
+ arrowPadding,
87
+ sticky,
88
+ disableAnchorTracking,
89
+ children: createElement(TooltipPrimitive.Popup, {
90
+ 'data-slot': 'tooltip-content',
91
+ className: cn(
92
+ 'z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
93
+ className,
94
+ ),
95
+ ...props,
96
+ // Octane reconciles ARRAY children as a keyed list, so every entry needs a key —
97
+ // including the consumer's. Leaving `children` bare emits the missing-key warning
98
+ // and lets the consumer node be mismatched against the arrow when its identity
99
+ // changes. The consumer may pass anything (a string, an element, an array), so it
100
+ // is wrapped in a keyed Fragment rather than keyed in place.
101
+ children: [
102
+ createElement(Fragment, { key: 'content', children }),
103
+ createElement(TooltipPrimitive.Arrow, {
104
+ key: 'arrow',
105
+ className: 'z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground',
106
+ }),
107
+ ],
108
+ }),
109
+ }),
110
+ });
111
+ }