@geomak/ui 5.5.1 → 5.5.3

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/index.d.cts CHANGED
@@ -788,34 +788,6 @@ interface TreeProps {
788
788
  */
789
789
  declare function Tree({ nodes, onNodeClick, defaultExpandAll, defaultExpandedKeys, }: TreeProps): react_jsx_runtime.JSX.Element;
790
790
 
791
- interface ToggleItem {
792
- key: string;
793
- label?: React$1.ReactNode;
794
- icon?: React$1.ReactNode;
795
- }
796
- interface ToggleButtonProps {
797
- items: ToggleItem[];
798
- onChange: (key: string) => void;
799
- activeKey: string;
800
- }
801
- /**
802
- * Segmented toggle-button group powered by Radix ToggleGroup.
803
- *
804
- * Radix handles keyboard navigation (arrow keys), focus ring, and
805
- * `role="group"` / `aria-pressed` ARIA attributes.
806
- *
807
- * @example
808
- * <ToggleButton
809
- * items={[
810
- * { key: 'grid', icon: <Icon.Grid /> },
811
- * { key: 'list', icon: <Icon.List /> },
812
- * ]}
813
- * activeKey={view}
814
- * onChange={setView}
815
- * />
816
- */
817
- declare function ToggleButton({ items, onChange, activeKey }: ToggleButtonProps): react_jsx_runtime.JSX.Element;
818
-
819
791
  /** ─────────────────── types ─────────────────── */
820
792
  type NotificationType = 'info' | 'success' | 'warning' | 'danger';
821
793
  type NotificationPosition = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';
@@ -1032,6 +1004,15 @@ interface ScalableContainerProps {
1032
1004
  width?: React$1.CSSProperties['width'];
1033
1005
  /** Resting height. Any CSS length / percent. Default `'auto'`. */
1034
1006
  height?: React$1.CSSProperties['height'];
1007
+ /** Width when expanded. Default `'100%'` (fills parent). */
1008
+ expandedWidth?: React$1.CSSProperties['width'];
1009
+ /** Height when expanded. Default `'100%'`. Set a concrete value (e.g. 420)
1010
+ * when the container lives in normal flow and should push siblings down. */
1011
+ expandedHeight?: React$1.CSSProperties['height'];
1012
+ /** Controlled expanded state. */
1013
+ expanded?: boolean;
1014
+ /** Fires when the user toggles. */
1015
+ onExpandedChange?: (expanded: boolean) => void;
1035
1016
  /** Content to render inside. */
1036
1017
  children?: React$1.ReactNode;
1037
1018
  /** CSS class appended to the expanded children wrapper. */
@@ -1071,7 +1052,7 @@ interface ScalableContainerProps {
1071
1052
  * </ScalableContainer>
1072
1053
  * ```
1073
1054
  */
1074
- declare function ScalableContainer({ width, height, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
1055
+ declare function ScalableContainer({ width, height, expandedWidth, expandedHeight, expanded, onExpandedChange, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
1075
1056
 
1076
1057
  interface GridCardItem {
1077
1058
  key: string | number;
@@ -2153,8 +2134,17 @@ interface RadioGroupProps {
2153
2134
  onChange?: (value: string) => void;
2154
2135
  name?: string;
2155
2136
  label?: React$1.ReactNode;
2156
- /** Group orientation. Default `'vertical'`. */
2157
- orientation?: 'vertical' | 'horizontal';
2137
+ /**
2138
+ * Option arrangement. `'vertical'` (default) stacks options in a column;
2139
+ * `'horizontal'` lays them in a row. Named `layout` for consistency with
2140
+ * the other inputs.
2141
+ */
2142
+ layout?: 'vertical' | 'horizontal';
2143
+ /**
2144
+ * Where each option's label sits relative to its radio dot.
2145
+ * `'right'` (default) → dot then label; `'left'` → label then dot.
2146
+ */
2147
+ labelPosition?: 'left' | 'right';
2158
2148
  /** Size preset — controls the dot + text size. Default `'md'`. */
2159
2149
  size?: FieldSize;
2160
2150
  disabled?: boolean;
@@ -2184,7 +2174,7 @@ interface RadioGroupProps {
2184
2174
  * />
2185
2175
  * ```
2186
2176
  */
2187
- declare function RadioGroup({ options, value, defaultValue, onChange, name, label, orientation, size, disabled, required, errorMessage, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
2177
+ declare function RadioGroup({ options, value, defaultValue, onChange, name, label, layout, labelPosition, size, disabled, required, errorMessage, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
2188
2178
 
2189
2179
  interface SwitchInputProps {
2190
2180
  checked?: boolean;
@@ -2929,4 +2919,4 @@ interface ColorPickerProps {
2929
2919
  */
2930
2920
  declare function ColorPicker({ value, onChange, label, htmlFor, name, layout, size, swatches, allowCustom, disabled, errorMessage, required, placeholder, }: ColorPickerProps): react_jsx_runtime.JSX.Element;
2931
2921
 
2932
- export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, Box, type BoxBackground, type BoxBorder, type BoxProps, type BoxRadius, type BoxShadow, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ColorPicker, type ColorPickerProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, Drawer, type DrawerProps, Dropdown, type DropdownItem, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, Field, type FieldProps, type FieldShellOptions, type FieldSize, FileInput, type FileInputProps, Flex, type FlexAlign, type FlexDirection, type FlexJustify, type FlexProps, type FlexWrap, Grid, GridCard, type GridCardItem, type GridCardProps, type GridProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, OtpInput, type OtpInputProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, RadioGroup, type RadioGroupProps, type RadioOption, Rating, type RatingProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Slider, type SliderMark, type SliderProps, type SliderValue, type Spacing, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, TagsInput, type TagsInputProps, DatePicker as Temporal, type TemporalPickerProps, TextArea, type TextAreaProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, TimePicker, type TimePickerProps, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type TypographyWeight, Wizard, type WizardProps, type WizardStep, fieldShell, useNotification };
2922
+ export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, Box, type BoxBackground, type BoxBorder, type BoxProps, type BoxRadius, type BoxShadow, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ColorPicker, type ColorPickerProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, Drawer, type DrawerProps, Dropdown, type DropdownItem, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, Field, type FieldProps, type FieldShellOptions, type FieldSize, FileInput, type FileInputProps, Flex, type FlexAlign, type FlexDirection, type FlexJustify, type FlexProps, type FlexWrap, Grid, GridCard, type GridCardItem, type GridCardProps, type GridProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, OtpInput, type OtpInputProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, RadioGroup, type RadioGroupProps, type RadioOption, Rating, type RatingProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Slider, type SliderMark, type SliderProps, type SliderValue, type Spacing, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, TagsInput, type TagsInputProps, DatePicker as Temporal, type TemporalPickerProps, TextArea, type TextAreaProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, TimePicker, type TimePickerProps, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type TypographyWeight, Wizard, type WizardProps, type WizardStep, fieldShell, useNotification };
package/dist/index.d.ts CHANGED
@@ -788,34 +788,6 @@ interface TreeProps {
788
788
  */
789
789
  declare function Tree({ nodes, onNodeClick, defaultExpandAll, defaultExpandedKeys, }: TreeProps): react_jsx_runtime.JSX.Element;
790
790
 
791
- interface ToggleItem {
792
- key: string;
793
- label?: React$1.ReactNode;
794
- icon?: React$1.ReactNode;
795
- }
796
- interface ToggleButtonProps {
797
- items: ToggleItem[];
798
- onChange: (key: string) => void;
799
- activeKey: string;
800
- }
801
- /**
802
- * Segmented toggle-button group powered by Radix ToggleGroup.
803
- *
804
- * Radix handles keyboard navigation (arrow keys), focus ring, and
805
- * `role="group"` / `aria-pressed` ARIA attributes.
806
- *
807
- * @example
808
- * <ToggleButton
809
- * items={[
810
- * { key: 'grid', icon: <Icon.Grid /> },
811
- * { key: 'list', icon: <Icon.List /> },
812
- * ]}
813
- * activeKey={view}
814
- * onChange={setView}
815
- * />
816
- */
817
- declare function ToggleButton({ items, onChange, activeKey }: ToggleButtonProps): react_jsx_runtime.JSX.Element;
818
-
819
791
  /** ─────────────────── types ─────────────────── */
820
792
  type NotificationType = 'info' | 'success' | 'warning' | 'danger';
821
793
  type NotificationPosition = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center';
@@ -1032,6 +1004,15 @@ interface ScalableContainerProps {
1032
1004
  width?: React$1.CSSProperties['width'];
1033
1005
  /** Resting height. Any CSS length / percent. Default `'auto'`. */
1034
1006
  height?: React$1.CSSProperties['height'];
1007
+ /** Width when expanded. Default `'100%'` (fills parent). */
1008
+ expandedWidth?: React$1.CSSProperties['width'];
1009
+ /** Height when expanded. Default `'100%'`. Set a concrete value (e.g. 420)
1010
+ * when the container lives in normal flow and should push siblings down. */
1011
+ expandedHeight?: React$1.CSSProperties['height'];
1012
+ /** Controlled expanded state. */
1013
+ expanded?: boolean;
1014
+ /** Fires when the user toggles. */
1015
+ onExpandedChange?: (expanded: boolean) => void;
1035
1016
  /** Content to render inside. */
1036
1017
  children?: React$1.ReactNode;
1037
1018
  /** CSS class appended to the expanded children wrapper. */
@@ -1071,7 +1052,7 @@ interface ScalableContainerProps {
1071
1052
  * </ScalableContainer>
1072
1053
  * ```
1073
1054
  */
1074
- declare function ScalableContainer({ width, height, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
1055
+ declare function ScalableContainer({ width, height, expandedWidth, expandedHeight, expanded, onExpandedChange, children, assignClassOnClick, expandIcon, collapseIcon, togglePosition, }: ScalableContainerProps): react_jsx_runtime.JSX.Element;
1075
1056
 
1076
1057
  interface GridCardItem {
1077
1058
  key: string | number;
@@ -2153,8 +2134,17 @@ interface RadioGroupProps {
2153
2134
  onChange?: (value: string) => void;
2154
2135
  name?: string;
2155
2136
  label?: React$1.ReactNode;
2156
- /** Group orientation. Default `'vertical'`. */
2157
- orientation?: 'vertical' | 'horizontal';
2137
+ /**
2138
+ * Option arrangement. `'vertical'` (default) stacks options in a column;
2139
+ * `'horizontal'` lays them in a row. Named `layout` for consistency with
2140
+ * the other inputs.
2141
+ */
2142
+ layout?: 'vertical' | 'horizontal';
2143
+ /**
2144
+ * Where each option's label sits relative to its radio dot.
2145
+ * `'right'` (default) → dot then label; `'left'` → label then dot.
2146
+ */
2147
+ labelPosition?: 'left' | 'right';
2158
2148
  /** Size preset — controls the dot + text size. Default `'md'`. */
2159
2149
  size?: FieldSize;
2160
2150
  disabled?: boolean;
@@ -2184,7 +2174,7 @@ interface RadioGroupProps {
2184
2174
  * />
2185
2175
  * ```
2186
2176
  */
2187
- declare function RadioGroup({ options, value, defaultValue, onChange, name, label, orientation, size, disabled, required, errorMessage, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
2177
+ declare function RadioGroup({ options, value, defaultValue, onChange, name, label, layout, labelPosition, size, disabled, required, errorMessage, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
2188
2178
 
2189
2179
  interface SwitchInputProps {
2190
2180
  checked?: boolean;
@@ -2929,4 +2919,4 @@ interface ColorPickerProps {
2929
2919
  */
2930
2920
  declare function ColorPicker({ value, onChange, label, htmlFor, name, layout, size, swatches, allowCustom, disabled, errorMessage, required, placeholder, }: ColorPickerProps): react_jsx_runtime.JSX.Element;
2931
2921
 
2932
- export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, Box, type BoxBackground, type BoxBorder, type BoxProps, type BoxRadius, type BoxShadow, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ColorPicker, type ColorPickerProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, Drawer, type DrawerProps, Dropdown, type DropdownItem, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, Field, type FieldProps, type FieldShellOptions, type FieldSize, FileInput, type FileInputProps, Flex, type FlexAlign, type FlexDirection, type FlexJustify, type FlexProps, type FlexWrap, Grid, GridCard, type GridCardItem, type GridCardProps, type GridProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, OtpInput, type OtpInputProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, RadioGroup, type RadioGroupProps, type RadioOption, Rating, type RatingProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Slider, type SliderMark, type SliderProps, type SliderValue, type Spacing, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, TagsInput, type TagsInputProps, DatePicker as Temporal, type TemporalPickerProps, TextArea, type TextAreaProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, TimePicker, type TimePickerProps, ToggleButton, type ToggleButtonProps, type ToggleItem, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type TypographyWeight, Wizard, type WizardProps, type WizardStep, fieldShell, useNotification };
2922
+ export { AppShell, type AppShellProps, AutoComplete, type AutoCompleteProps, Avatar, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, Box, type BoxBackground, type BoxBorder, type BoxProps, type BoxRadius, type BoxShadow, Button, type ButtonProps, Catalog, CatalogCarousel, type CatalogCarouselProps, CatalogGrid, type CatalogGridProps, type CatalogProps, Checkbox, type CheckboxProps, ColorPicker, type ColorPickerProps, ContextMenu, type ContextMenuActionItem, type ContextMenuPosition, type ContextMenuProps, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, Drawer, type DrawerProps, Dropdown, type DropdownItem, type DropdownProps, type ExpandRowOptions, FadingBase, type FadingBaseProps, Field, type FieldProps, type FieldShellOptions, type FieldSize, FileInput, type FileInputProps, Flex, type FlexAlign, type FlexDirection, type FlexJustify, type FlexProps, type FlexWrap, Grid, GridCard, type GridCardItem, type GridCardProps, type GridProps, Icon, IconButton, type IconButtonProps, List, type ListItem, type ListProps, LoadingSpinner, type LoadingSpinnerProps, Modal, type ModalProps, type NotificationPayload, NotificationProvider, NumberInput, type NumberInputProps, OpaqueGridCard, type OpaqueGridCardProps, OtpInput, type OtpInputProps, type PaginationOptions, Password, type PasswordProps, Portal, type PortalProps, RadioGroup, type RadioGroupProps, type RadioOption, Rating, type RatingProps, ScalableContainer, type ScalableContainerProps, SearchInput, type SearchInputProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, SkeletonBox, type SkeletonBoxProps, SkeletonCard, type SkeletonCardProps, SkeletonCircle, type SkeletonCircleProps, SkeletonText, type SkeletonTextProps, Slider, type SliderMark, type SliderProps, type SliderValue, type Spacing, Switch, type SwitchInputProps, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, TagsInput, type TagsInputProps, DatePicker as Temporal, type TemporalPickerProps, TextArea, type TextAreaProps, TextInput, type TextInputProps, type ThemeColors, type ThemeConfig, type ThemeDensity, type ThemeMotion, ThemeProvider, type ThemeProviderProps, type ThemeRadius, type ThemeShadows, ThemeSwitch, type ThemeSwitchProps, type ThemeTypography, TimePicker, type TimePickerProps, Tooltip, type TooltipProps, TooltipProvider, TopBar, type TopBarProps, Tree, type TreeItemClickPayload, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type TypographyWeight, Wizard, type WizardProps, type WizardStep, fieldShell, useNotification };
package/dist/index.js CHANGED
@@ -9,12 +9,12 @@ import { useReducedMotion, AnimatePresence, motion } from 'framer-motion';
9
9
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
10
10
  import * as TabsPrimitive from '@radix-ui/react-tabs';
11
11
  import * as Accordion from '@radix-ui/react-accordion';
12
- import * as ToggleGroup from '@radix-ui/react-toggle-group';
13
12
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
14
13
  import * as Popover from '@radix-ui/react-popover';
15
14
  import * as SwitchPrimitive from '@radix-ui/react-switch';
16
15
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
17
16
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
17
+ import * as ToggleGroup from '@radix-ui/react-toggle-group';
18
18
  import * as SliderPrimitive from '@radix-ui/react-slider';
19
19
 
20
20
  var Moon = ({ color = "gray" }) => /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: color, viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: color, className: "w-8 h-8", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z" }) });
@@ -1143,38 +1143,6 @@ function Tree({
1143
1143
  item.key
1144
1144
  )) });
1145
1145
  }
1146
- function ToggleButton({ items, onChange, activeKey }) {
1147
- return /* @__PURE__ */ jsx(
1148
- ToggleGroup.Root,
1149
- {
1150
- type: "single",
1151
- value: activeKey,
1152
- onValueChange: (val) => {
1153
- if (val) onChange(val);
1154
- },
1155
- className: "flex items-center",
1156
- children: items.map((item, index) => /* @__PURE__ */ jsx(
1157
- ToggleGroup.Item,
1158
- {
1159
- value: item.key,
1160
- "aria-label": typeof item.label === "string" ? item.label : item.key,
1161
- className: [
1162
- // Semantic tokens handle both light and dark modes via
1163
- // CSS vars — no `dark:` variants needed.
1164
- index === 0 && "rounded-l-lg border-r border-border",
1165
- index === items.length - 1 && "rounded-r-lg border-l border-border",
1166
- "p-2 cursor-pointer transition-colors duration-150 text-foreground-secondary",
1167
- "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent",
1168
- "bg-surface hover:bg-surface-raised",
1169
- "data-[state=on]:bg-accent data-[state=on]:text-accent-fg"
1170
- ].filter(Boolean).join(" "),
1171
- children: item.icon ?? item.label
1172
- },
1173
- item.key
1174
- ))
1175
- }
1176
- );
1177
- }
1178
1146
  var NotificationContext = createContext({
1179
1147
  open: () => void 0,
1180
1148
  close: () => void 0
@@ -1576,6 +1544,10 @@ var TOGGLE_POSITION_CLASS = {
1576
1544
  function ScalableContainer({
1577
1545
  width = "100%",
1578
1546
  height = "auto",
1547
+ expandedWidth = "100%",
1548
+ expandedHeight = "100%",
1549
+ expanded,
1550
+ onExpandedChange,
1579
1551
  children,
1580
1552
  assignClassOnClick,
1581
1553
  expandIcon,
@@ -1583,27 +1555,32 @@ function ScalableContainer({
1583
1555
  togglePosition = "top-right"
1584
1556
  }) {
1585
1557
  const containerRef = useRef(null);
1586
- const [isScaled, setScaled] = useState(false);
1558
+ const [internalScaled, setInternalScaled] = useState(false);
1559
+ const isScaled = expanded ?? internalScaled;
1587
1560
  const reduced = useReducedMotion();
1588
1561
  const onToggle = () => {
1589
1562
  const next = !isScaled;
1590
- setScaled(next);
1591
- requestAnimationFrame(() => containerRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" }));
1563
+ if (expanded === void 0) setInternalScaled(next);
1564
+ onExpandedChange?.(next);
1565
+ if (next) {
1566
+ window.setTimeout(
1567
+ () => containerRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" }),
1568
+ reduced ? 0 : 340
1569
+ );
1570
+ }
1592
1571
  };
1593
1572
  const wrapperClass = isScaled ? assignClassOnClick : void 0;
1594
1573
  return /* @__PURE__ */ jsxs(
1595
1574
  motion.div,
1596
1575
  {
1597
1576
  ref: containerRef,
1598
- layout: true,
1599
1577
  animate: {
1600
- width: isScaled ? "100%" : width,
1601
- height: isScaled ? "100%" : height
1578
+ width: isScaled ? expandedWidth : width,
1579
+ height: isScaled ? expandedHeight : height
1602
1580
  },
1603
1581
  transition: reduced ? { duration: 0 } : {
1604
1582
  width: { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] },
1605
- height: { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] },
1606
- layout: { duration: 0.32, ease: [0.16, 1, 0.3, 1] }
1583
+ height: { type: "tween", duration: 0.32, ease: [0.16, 1, 0.3, 1] }
1607
1584
  },
1608
1585
  className: [
1609
1586
  "relative rounded-lg overflow-hidden",
@@ -2139,10 +2116,10 @@ var FIELD_SIZE = {
2139
2116
  md: { control: "h-control-md", text: "text-sm", padX: "px-3", gap: "gap-2" },
2140
2117
  lg: { control: "h-control-lg", text: "text-sm", padX: "px-3.5", gap: "gap-2.5" }
2141
2118
  };
2142
- var FOCUS_WITHIN = "focus-within:outline-none focus-within:border-accent focus-within:ring-[3px] focus-within:ring-focus-ring";
2143
- var FOCUS_ELEMENT = "focus:outline-none focus:border-accent focus:ring-[3px] focus:ring-focus-ring data-[state=open]:border-accent data-[state=open]:ring-[3px] data-[state=open]:ring-focus-ring";
2144
- var FOCUS_WITHIN_ERROR = "focus-within:border-status-error focus-within:ring-focus-ring-error";
2145
- var FOCUS_ELEMENT_ERROR = "focus:border-status-error focus:ring-focus-ring-error data-[state=open]:border-status-error data-[state=open]:ring-focus-ring-error";
2119
+ var FOCUS_WITHIN = "focus-within:outline-none focus-within:border-accent";
2120
+ var FOCUS_ELEMENT = "focus:outline-none focus:border-accent data-[state=open]:border-accent";
2121
+ var FOCUS_WITHIN_ERROR = "focus-within:border-status-error";
2122
+ var FOCUS_ELEMENT_ERROR = "focus:border-status-error data-[state=open]:border-status-error";
2146
2123
  function fieldShell({
2147
2124
  size = "md",
2148
2125
  hasError = false,
@@ -2353,7 +2330,7 @@ function Dropdown({
2353
2330
  "aria-invalid": hasError || void 0,
2354
2331
  "aria-describedby": hasError ? errorId : void 0,
2355
2332
  style,
2356
- className: `flex items-center justify-between gap-1 cursor-pointer select-none min-h-[36px] px-3 py-1.5 ${fieldShell({ size, hasError, disabled, sized: false })}`,
2333
+ className: `flex items-center justify-between gap-2 cursor-pointer select-none min-h-[36px] px-3 py-1.5 ${!style?.width ? "min-w-[200px]" : ""} ${fieldShell({ size, hasError, disabled, sized: false })}`,
2357
2334
  tabIndex: disabled ? -1 : 0,
2358
2335
  onKeyDown: (e) => {
2359
2336
  if (disabled) return;
@@ -2363,31 +2340,25 @@ function Dropdown({
2363
2340
  }
2364
2341
  },
2365
2342
  children: [
2366
- /* @__PURE__ */ jsx(
2367
- "div",
2343
+ /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0 flex flex-wrap items-center gap-1.5", children: !value || Array.isArray(value) && value.length === 0 ? /* @__PURE__ */ jsx("span", { className: "text-foreground-muted text-sm", children: placeholder }) : Array.isArray(value) ? value.map((val) => /* @__PURE__ */ jsx(
2344
+ Tag,
2368
2345
  {
2369
- className: `${!style?.width ? "min-w-[200px]" : ""} flex flex-wrap items-center gap-1.5`,
2370
- children: !value || Array.isArray(value) && value.length === 0 ? /* @__PURE__ */ jsx("span", { className: "text-foreground-muted text-sm", children: placeholder }) : Array.isArray(value) ? value.map((val) => /* @__PURE__ */ jsx(
2371
- Tag,
2372
- {
2373
- disabled,
2374
- removeLabel: `Remove ${labelFor(val)}`,
2375
- onRemove: () => removeSelected(val),
2376
- children: labelFor(val)
2377
- },
2378
- String(val)
2379
- )) : /* @__PURE__ */ jsx(
2380
- Tag,
2381
- {
2382
- disabled,
2383
- removeLabel: `Remove ${labelFor(value)}`,
2384
- onRemove: () => removeSelected(value),
2385
- children: labelFor(value)
2386
- }
2387
- )
2346
+ disabled,
2347
+ removeLabel: `Remove ${labelFor(val)}`,
2348
+ onRemove: () => removeSelected(val),
2349
+ children: labelFor(val)
2350
+ },
2351
+ String(val)
2352
+ )) : /* @__PURE__ */ jsx(
2353
+ Tag,
2354
+ {
2355
+ disabled,
2356
+ removeLabel: `Remove ${labelFor(value)}`,
2357
+ onRemove: () => removeSelected(value),
2358
+ children: labelFor(value)
2388
2359
  }
2389
- ),
2390
- /* @__PURE__ */ jsx("div", { className: `flex-shrink-0 ml-2 text-foreground-muted transition-transform duration-200 ${open ? "rotate-180" : "rotate-0"}`, "aria-hidden": "true", children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
2360
+ ) }),
2361
+ /* @__PURE__ */ jsx("div", { className: `flex-shrink-0 text-foreground-muted transition-transform duration-200 ${open ? "rotate-180" : "rotate-0"}`, "aria-hidden": "true", children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
2391
2362
  ]
2392
2363
  }
2393
2364
  ) }),
@@ -3645,7 +3616,8 @@ function RadioGroup({
3645
3616
  onChange,
3646
3617
  name,
3647
3618
  label,
3648
- orientation = "vertical",
3619
+ layout = "vertical",
3620
+ labelPosition = "right",
3649
3621
  size = "md",
3650
3622
  disabled,
3651
3623
  required,
@@ -3654,6 +3626,7 @@ function RadioGroup({
3654
3626
  const errorId = useId();
3655
3627
  const groupId = useId();
3656
3628
  const hasError = errorMessage != null;
3629
+ const labelFirst = labelPosition === "left";
3657
3630
  return /* @__PURE__ */ jsx(
3658
3631
  Field,
3659
3632
  {
@@ -3674,44 +3647,51 @@ function RadioGroup({
3674
3647
  required,
3675
3648
  "aria-invalid": hasError || void 0,
3676
3649
  "aria-describedby": hasError ? errorId : void 0,
3677
- orientation,
3678
- className: orientation === "horizontal" ? "flex flex-row flex-wrap gap-5" : "flex flex-col gap-3",
3650
+ orientation: layout,
3651
+ className: layout === "horizontal" ? "flex flex-row flex-wrap gap-5" : "flex flex-col gap-3",
3679
3652
  children: options.map((opt) => {
3680
3653
  const itemId = `${groupId}-${opt.value}`;
3681
- return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2.5", children: [
3682
- /* @__PURE__ */ jsx(
3683
- RadioGroupPrimitive.Item,
3684
- {
3685
- id: itemId,
3686
- value: opt.value,
3687
- disabled: opt.disabled,
3688
- className: [
3689
- DOT_SIZE[size],
3690
- "mt-0.5 flex-shrink-0 rounded-full border bg-surface transition-colors duration-150",
3691
- "border-border-strong",
3692
- "hover:border-accent",
3693
- "data-[state=checked]:border-accent",
3694
- "focus:outline-none focus-visible:ring-[3px] focus-visible:ring-focus-ring",
3695
- "disabled:cursor-not-allowed disabled:opacity-50"
3696
- ].join(" "),
3697
- children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "block h-1/2 w-1/2 rounded-full bg-accent" }) })
3698
- }
3699
- ),
3700
- /* @__PURE__ */ jsxs(
3701
- "label",
3702
- {
3703
- htmlFor: itemId,
3704
- className: [
3705
- "select-none",
3706
- opt.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"
3707
- ].join(" "),
3708
- children: [
3709
- /* @__PURE__ */ jsx("span", { className: `block ${TEXT_SIZE[size]} text-foreground`, children: opt.label }),
3710
- opt.description && /* @__PURE__ */ jsx("span", { className: "block text-xs text-foreground-secondary mt-0.5", children: opt.description })
3711
- ]
3712
- }
3713
- )
3714
- ] }, opt.value);
3654
+ const dot = /* @__PURE__ */ jsx(
3655
+ RadioGroupPrimitive.Item,
3656
+ {
3657
+ id: itemId,
3658
+ value: opt.value,
3659
+ disabled: opt.disabled,
3660
+ className: [
3661
+ DOT_SIZE[size],
3662
+ "mt-0.5 flex-shrink-0 rounded-full border bg-surface transition-colors duration-150",
3663
+ "border-border-strong",
3664
+ "hover:border-accent",
3665
+ "data-[state=checked]:border-accent",
3666
+ // Border-only focus, consistent with the fields.
3667
+ "focus:outline-none focus-visible:border-accent",
3668
+ "disabled:cursor-not-allowed disabled:opacity-50"
3669
+ ].join(" "),
3670
+ children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, { className: "flex h-full w-full items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "block h-1/2 w-1/2 rounded-full bg-accent" }) })
3671
+ }
3672
+ );
3673
+ const labelEl = /* @__PURE__ */ jsxs(
3674
+ "label",
3675
+ {
3676
+ htmlFor: itemId,
3677
+ className: [
3678
+ "select-none",
3679
+ opt.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
3680
+ labelFirst ? "text-right" : ""
3681
+ ].filter(Boolean).join(" "),
3682
+ children: [
3683
+ /* @__PURE__ */ jsx("span", { className: `block ${TEXT_SIZE[size]} text-foreground`, children: opt.label }),
3684
+ opt.description && /* @__PURE__ */ jsx("span", { className: "block text-xs text-foreground-secondary mt-0.5", children: opt.description })
3685
+ ]
3686
+ }
3687
+ );
3688
+ return /* @__PURE__ */ jsx("div", { className: "flex items-start gap-2.5", children: labelFirst ? /* @__PURE__ */ jsxs(Fragment, { children: [
3689
+ labelEl,
3690
+ dot
3691
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
3692
+ dot,
3693
+ labelEl
3694
+ ] }) }, opt.value);
3715
3695
  })
3716
3696
  }
3717
3697
  )
@@ -4442,11 +4422,11 @@ function DatePicker({
4442
4422
  };
4443
4423
  const displayValue = value ? format(value) : "";
4444
4424
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
4445
- /* @__PURE__ */ jsxs("div", { className: `flex ${layout === "vertical" ? "flex-col gap-1" : "flex-row items-center gap-2"}`, children: [
4425
+ /* @__PURE__ */ jsxs("div", { className: `flex ${layout === "vertical" ? "flex-col gap-1.5" : "flex-row items-start gap-3"}`, children: [
4446
4426
  label && /* @__PURE__ */ jsx(
4447
4427
  "label",
4448
4428
  {
4449
- className: "text-sm font-medium ml-1 max-content select-none text-foreground",
4429
+ className: `text-sm font-medium select-none text-foreground ${layout === "horizontal" ? "mt-2 flex-shrink-0 whitespace-nowrap" : ""}`,
4450
4430
  htmlFor,
4451
4431
  children: label
4452
4432
  }
@@ -5102,10 +5082,11 @@ function OtpInput({
5102
5082
  className: [
5103
5083
  BOX_SIZE[size],
5104
5084
  "text-center font-medium rounded-lg border bg-surface text-foreground",
5105
- "transition-[border-color,box-shadow] duration-150",
5085
+ "transition-[border-color] duration-150",
5106
5086
  hasError ? "border-status-error" : "border-border",
5107
5087
  "hover:border-border-strong",
5108
- "focus:outline-none focus:border-accent focus:ring-[3px] focus:ring-focus-ring",
5088
+ // Border-only focus, consistent with every field (no clip-prone ring).
5089
+ "focus:outline-none focus:border-accent",
5109
5090
  "disabled:bg-surface-raised disabled:text-foreground-muted disabled:cursor-not-allowed"
5110
5091
  ].join(" ")
5111
5092
  }
@@ -5646,6 +5627,6 @@ function ColorPicker({
5646
5627
  ] });
5647
5628
  }
5648
5629
 
5649
- export { AppShell, AutoComplete, Avatar, Box, Button, Catalog, CatalogCarousel, CatalogGrid, Checkbox, ColorPicker, ContextMenu, DateRangePicker, Drawer, Dropdown, FadingBase, Field, FileInput, Flex, Grid2 as Grid, GridCard, icons_default as Icon, IconButton, List2 as List, LoadingSpinner, Modal, NotificationProvider, NumberInput, OpaqueGridCard, OtpInput, Password, Portal, RadioGroup, Rating, ScalableContainer, SearchInput_default as SearchInput, SegmentedControl, Sidebar, SkeletonBox, SkeletonCard, SkeletonCircle, SkeletonText, Slider, Switch, Table, Tabs, TagsInput, DatePicker as Temporal, TextArea, TextInput, ThemeProvider, ThemeSwitch, TimePicker, ToggleButton, Tooltip, TooltipProvider, TopBar, Tree, TreeSelect, Typography, Wizard, fieldShell, useNotification };
5630
+ export { AppShell, AutoComplete, Avatar, Box, Button, Catalog, CatalogCarousel, CatalogGrid, Checkbox, ColorPicker, ContextMenu, DateRangePicker, Drawer, Dropdown, FadingBase, Field, FileInput, Flex, Grid2 as Grid, GridCard, icons_default as Icon, IconButton, List2 as List, LoadingSpinner, Modal, NotificationProvider, NumberInput, OpaqueGridCard, OtpInput, Password, Portal, RadioGroup, Rating, ScalableContainer, SearchInput_default as SearchInput, SegmentedControl, Sidebar, SkeletonBox, SkeletonCard, SkeletonCircle, SkeletonText, Slider, Switch, Table, Tabs, TagsInput, DatePicker as Temporal, TextArea, TextInput, ThemeProvider, ThemeSwitch, TimePicker, Tooltip, TooltipProvider, TopBar, Tree, TreeSelect, Typography, Wizard, fieldShell, useNotification };
5650
5631
  //# sourceMappingURL=index.js.map
5651
5632
  //# sourceMappingURL=index.js.map