Move Soma public types out of providers

active-uix
dev 5 months ago
parent eaeebd6991
commit 9fa00fa258

@ -9,8 +9,7 @@ import { ResizeObserver$ } from '../../layers/resize-observer.svelte';
import { Soma } from '../../core/soma.svelte';
import { accordionMorfo } from '../../../morfo/components/accordion';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
export type AccordionType = 'single' | 'multiple';
import type { AccordionType } from './types';
const arraysEqual = (a: readonly string[], b: readonly string[]) =>
a.length === b.length && a.every((value, index) => value === b[index]);

@ -4,9 +4,8 @@ export { default as Header } from './components/accordion-header.svelte';
export { default as Trigger } from './components/accordion-trigger.svelte';
export { default as Content } from './components/accordion-content.svelte';
export type { AccordionType } from './accordion-provider.svelte';
export type {
AccordionType,
AccordionProps,
AccordionProps as ProviderProps,
AccordionItemProps,

@ -1,7 +1,8 @@
import type { Snippet } from 'svelte';
import type { WithChild, Without, OnChangeFn, Orientation, Direction } from '../../types';
import type { PrimitiveDivAttributes, PrimitiveButtonAttributes } from '../../types';
import type { AccordionType } from './accordion-provider.svelte';
export type AccordionType = 'single' | 'multiple';
/** Discrete visual size — same scale buttons / inputs use; `full`
* bumps padding / font to the largest tier for hero-prominent

@ -28,11 +28,10 @@ import {
import { comboboxMorfo } from '../../../morfo/components/combobox';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import type { ComboboxType } from './types';
const attrs = createAttrs(comboboxMorfo);
export type ComboboxType = 'single' | 'multiple';
// ── Root ─────────────────────────────────────────────────────────────────────
interface ComboboxOpts

@ -9,9 +9,8 @@ export { default as GroupHeading } from './components/combobox-group-heading.sve
export { default as Separator } from './components/combobox-separator.svelte';
export { default as Arrow } from './components/combobox-arrow.svelte';
export type { ComboboxType } from './combobox-provider.svelte';
export type {
ComboboxType,
ComboboxProps as ProviderProps,
ComboboxInputProps as InputProps,
ComboboxTriggerProps as TriggerProps,

@ -13,7 +13,8 @@ import type {
} from '../../types';
import type { DismissalBehavior } from '../../layers/dismissal.svelte';
import type { Side, Align, Boundary } from '../../types';
import type { ComboboxType } from './combobox-provider.svelte';
export type ComboboxType = 'single' | 'multiple';
export type ComboboxProps = {
/** Unique identifier. Auto-generated if omitted. */

@ -11,9 +11,7 @@ import { editableMorfo } from '../../../morfo/components/editable';
const attrs = createAttrs(editableMorfo);
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
export type ActivationMode = 'focus' | 'click' | 'dblclick' | 'none';
export type SubmitMode = 'enter' | 'blur' | 'both' | 'none';
import type { ActivationMode, SubmitMode } from './types';
// ── Root ─────────────────────────────────────────────────────────────────────

@ -6,9 +6,9 @@ export { default as EditTrigger } from './components/editable-edit-trigger.svelt
export { default as SubmitTrigger } from './components/editable-submit-trigger.svelte';
export { default as CancelTrigger } from './components/editable-cancel-trigger.svelte';
export type { ActivationMode, SubmitMode } from './editable-provider.svelte';
export type {
ActivationMode,
SubmitMode,
EditableProps as ProviderProps,
EditableAreaProps as AreaProps,
EditablePreviewProps as PreviewProps,

@ -4,7 +4,9 @@ import type {
PrimitiveButtonAttributes,
PrimitiveInputAttributes
} from '../../types';
import type { ActivationMode, SubmitMode } from './editable-provider.svelte';
export type ActivationMode = 'focus' | 'click' | 'dblclick' | 'none';
export type SubmitMode = 'enter' | 'blur' | 'both' | 'none';
export type EditableProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -12,7 +12,7 @@ export { default as ItemRemove } from './components/file-upload-item-remove.svel
export { default as ItemProgress } from './components/file-upload-item-progress.svelte';
export { default as ClearTrigger } from './components/file-upload-clear-trigger.svelte';
export { formatBytes } from './file-upload-provider.svelte';
export { formatBytes } from './format';
export type {
FileUploadProps as ProviderProps,

@ -7,6 +7,7 @@ import { Soma } from '../../core/soma.svelte';
import { FILE_UPLOAD_LANGS } from './langs';
import { FieldProvider } from '../field/field-provider.svelte';
import type { FileRejection, FileRejectionReason } from './types';
import { formatBytes } from './format';
import { fileUploadMorfo } from '../../../morfo/components/file-upload';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
@ -24,16 +25,6 @@ function isAccepted(file: File, accept: string): boolean {
});
}
const BYTE_UNITS = ['B', 'KB', 'MB', 'GB', 'TB'];
export function formatBytes(bytes: number): string {
if (bytes === 0) return '0 B';
const k = 1024;
const i = Math.min(Math.floor(Math.log(bytes) / Math.log(k)), BYTE_UNITS.length - 1);
const v = bytes / Math.pow(k, i);
return `${Number.isInteger(v) ? v : v.toFixed(1)} ${BYTE_UNITS[i]}`;
}
// ── Root ─────────────────────────────────────────────────────────────────────
interface FileUploadOpts

@ -0,0 +1,9 @@
const BYTE_UNITS = ['B', 'KB', 'MB', 'GB', 'TB'];
export function formatBytes(bytes: number): string {
if (bytes === 0) return '0 B';
const k = 1024;
const i = Math.min(Math.floor(Math.log(bytes) / Math.log(k)), BYTE_UNITS.length - 1);
const v = bytes / Math.pow(k, i);
return `${Number.isInteger(v) ? v : v.toFixed(1)} ${BYTE_UNITS[i]}`;
}

@ -4,9 +4,10 @@ export { default as NextTrigger } from './components/pagination-next-trigger.sve
export { default as Item } from './components/pagination-item.svelte';
export { default as Ellipsis } from './components/pagination-ellipsis.svelte';
export type { PageItem, EllipsisItem, PageRange } from './pagination-provider.svelte';
export type {
PageItem,
EllipsisItem,
PageRange,
PaginationProps as ProviderProps,
PaginationPrevTriggerProps as PrevTriggerProps,
PaginationNextTriggerProps as NextTriggerProps,

@ -6,21 +6,7 @@ import { PAGINATION_LANGS } from './langs';
import { paginationMorfo } from '../../../morfo/components/pagination';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
// ── Page range algorithm ─────────────────────────────────────────────────────
export interface PageItem {
type: 'page';
value: number;
}
export interface EllipsisItem {
type: 'ellipsis';
position: 'start' | 'end';
}
export type PageRange = (PageItem | EllipsisItem)[];
import type { PageRange } from './types';
function computePageRange(
page: number,

@ -1,6 +1,17 @@
import type { WithChild, Without, OnChangeFn } from '../../types';
import type { PrimitiveDivAttributes, PrimitiveButtonAttributes } from '../../types';
import type { PageRange } from './pagination-provider.svelte';
export interface PageItem {
type: 'page';
value: number;
}
export interface EllipsisItem {
type: 'ellipsis';
position: 'start' | 'end';
}
export type PageRange = (PageItem | EllipsisItem)[];
export type PaginationProps = WithChild<
{

@ -4,9 +4,8 @@ export { default as Scrollbar } from './components/scroll-area-scrollbar.svelte'
export { default as Thumb } from './components/scroll-area-thumb.svelte';
export { default as Corner } from './components/scroll-area-corner.svelte';
export type { ScrollAreaType } from './scroll-area-provider.svelte';
export type {
ScrollAreaType,
ScrollAreaProps as ProviderProps,
ScrollAreaViewportProps as ViewportProps,
ScrollAreaScrollbarProps as ScrollbarProps,

@ -8,8 +8,7 @@ import { SCROLL_AREA_LANGS } from './langs';
import { scrollAreaMorfo } from '../../../morfo/components/scroll-area';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import type { TimerHandle } from '$timer';
export type ScrollAreaType = 'hover' | 'scroll' | 'auto' | 'always';
import type { ScrollAreaType } from './types';
// ── Root ─────────────────────────────────────────────────────────────────────

@ -1,6 +1,7 @@
import type { WithChild, Without, Orientation, Direction } from '../../types';
import type { PrimitiveDivAttributes } from '../../types';
import type { ScrollAreaType } from './scroll-area-provider.svelte';
export type ScrollAreaType = 'hover' | 'scroll' | 'auto' | 'always';
export type ScrollAreaProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -3,9 +3,8 @@ export { default as Range } from './components/slider-range.svelte';
export { default as Thumb } from './components/slider-thumb.svelte';
export { default as Tick } from './components/slider-tick.svelte';
export type { SliderType } from './slider-provider.svelte';
export type {
SliderType,
SliderProps as ProviderProps,
SliderRangeProps as RangeProps,
SliderThumbProps as ThumbProps,

@ -7,9 +7,7 @@ import { KEYS, getDirectionalKeys } from '../../keyboard';
import { sliderMorfo } from '../../../morfo/components/slider';
import { Soma } from '../../core/soma.svelte';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
export type SliderType = 'single' | 'multiple';
import type { SliderType } from './types';
// ── Helpers ──────────────────────────────────────────────────────────────────

@ -1,6 +1,7 @@
import type { WithChild, Without, OnChangeFn, Orientation, Direction } from '../../types';
import type { PrimitiveDivAttributes, PrimitiveSpanAttributes } from '../../types';
import type { SliderType } from './slider-provider.svelte';
export type SliderType = 'single' | 'multiple';
export type SliderProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -9,9 +9,8 @@ export { default as CompletedContent } from './components/stepper-completed-cont
export { default as PrevTrigger } from './components/stepper-prev-trigger.svelte';
export { default as NextTrigger } from './components/stepper-next-trigger.svelte';
export type { StepState } from './stepper-provider.svelte';
export type {
StepState,
StepperProps as ProviderProps,
StepperListProps as ListProps,
StepperItemProps as ItemProps,

@ -8,8 +8,7 @@ import { STEPPER_LANGS } from './langs';
import { stepperMorfo } from '../../../morfo/components/stepper';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
export type StepState = 'complete' | 'current' | 'incomplete';
import type { StepState } from './types';
// ── Root ─────────────────────────────────────────────────────────────────────

@ -1,6 +1,7 @@
import type { WithChild, Without, OnChangeFn, Orientation, Direction } from '../../types';
import type { PrimitiveDivAttributes, PrimitiveButtonAttributes } from '../../types';
import type { StepState } from './stepper-provider.svelte';
export type StepState = 'complete' | 'current' | 'incomplete';
export type StepperProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -4,9 +4,8 @@ export { default as Trigger } from './components/tabs-trigger.svelte';
export { default as Content } from './components/tabs-content.svelte';
export { default as Indicator } from './components/tabs-indicator.svelte';
export type { ActivationMode } from './tabs-provider.svelte';
export type {
ActivationMode,
TabsProps as ProviderProps,
TabsListProps as ListProps,
TabsTriggerProps as TriggerProps,

@ -16,11 +16,10 @@ import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import { Presence } from '../../layers/presence.svelte';
import { tabsMorfo } from '../../../morfo/components/tabs';
import type { ActivationMode } from './types';
const attrs = createAttrs(tabsMorfo);
export type ActivationMode = 'automatic' | 'manual';
// ── Root ─────────────────────────────────────────────────────────────────────
interface TabsOpts

@ -1,6 +1,7 @@
import type { WithChild, Without, OnChangeFn, Orientation, Direction } from '../../types';
import type { PrimitiveDivAttributes, PrimitiveButtonAttributes } from '../../types';
import type { ActivationMode } from './tabs-provider.svelte';
export type ActivationMode = 'automatic' | 'manual';
export type TabsProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -6,9 +6,8 @@ export { default as ItemText } from './components/tags-input-item-text.svelte';
export { default as ItemDeleteTrigger } from './components/tags-input-item-delete-trigger.svelte';
export { default as ClearTrigger } from './components/tags-input-clear-trigger.svelte';
export type { BlurBehavior } from './tags-input-provider.svelte';
export type {
BlurBehavior,
TagsInputProps as ProviderProps,
TagsInputControlProps as ControlProps,
TagsInputInputProps as InputProps,

@ -9,11 +9,10 @@ import { TAGS_INPUT_LANGS } from './langs';
import { tagsInputMorfo } from '../../../morfo/components/tags-input';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import type { BlurBehavior } from './types';
const attrs = createAttrs(tagsInputMorfo);
export type BlurBehavior = 'add' | 'clear';
// ── Root ─────────────────────────────────────────────────────────────────────
interface TagsInputOpts

@ -4,7 +4,8 @@ import type {
PrimitiveButtonAttributes,
PrimitiveInputAttributes
} from '../../types';
import type { BlurBehavior } from './tags-input-provider.svelte';
export type BlurBehavior = 'add' | 'clear';
export type TagsInputProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -1,6 +1,8 @@
export { default as Provider } from './components/toggle-group.svelte';
export { default as Item } from './components/toggle-group-item.svelte';
export type { ToggleGroupType } from './toggle-group-provider.svelte';
export type { ToggleGroupProps as ProviderProps, ToggleGroupItemProps as ItemProps } from './types';
export type {
ToggleGroupType,
ToggleGroupProps as ProviderProps,
ToggleGroupItemProps as ItemProps
} from './types';

@ -7,11 +7,10 @@ import { KEYS, getDirectionalKeys } from '../../keyboard';
import { toggleGroupMorfo } from '../../../morfo/components/toggle-group';
import { Soma } from '../../core/soma.svelte';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import type { ToggleGroupType } from './types';
const attrs = createAttrs(toggleGroupMorfo);
export type ToggleGroupType = 'single' | 'multiple';
// ── Root ─────────────────────────────────────────────────────────────────────
interface ToggleGroupOpts

@ -1,6 +1,7 @@
import type { WithChild, Without, OnChangeFn, Orientation, Direction } from '../../types';
import type { PrimitiveDivAttributes, PrimitiveButtonAttributes } from '../../types';
import type { ToggleGroupType } from './toggle-group-provider.svelte';
export type ToggleGroupType = 'single' | 'multiple';
export type ToggleGroupProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -5,9 +5,8 @@ export { default as Group } from './components/toolbar-group.svelte';
export { default as GroupItem } from './components/toolbar-group-item.svelte';
export { default as Separator } from './components/toolbar-separator.svelte';
export type { ToolbarGroupType } from './toolbar-provider.svelte';
export type {
ToolbarGroupType,
ToolbarProps as ProviderProps,
ToolbarButtonProps as ButtonProps,
ToolbarLinkProps as LinkProps,

@ -8,11 +8,10 @@ import { KEYS, getDirectionalKeys } from '../../keyboard';
import { toolbarMorfo } from '../../../morfo/components/toolbar';
import { Soma } from '../../core/soma.svelte';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import type { ToolbarGroupType } from './types';
const attrs = createAttrs(toolbarMorfo);
export type ToolbarGroupType = 'single' | 'multiple';
// ── Root ─────────────────────────────────────────────────────────────────────
interface ToolbarOpts

@ -4,7 +4,8 @@ import type {
PrimitiveButtonAttributes,
PrimitiveAnchorAttributes
} from '../../types';
import type { ToolbarGroupType } from './toolbar-provider.svelte';
export type ToolbarGroupType = 'single' | 'multiple';
export type ToolbarProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

@ -4,9 +4,8 @@ export { default as Trigger } from './components/tooltip-trigger.svelte';
export { default as Content } from './components/tooltip-content.svelte';
export { default as Arrow } from './components/tooltip-arrow.svelte';
export type { TooltipState } from './tooltip-provider.svelte';
export type {
TooltipState,
TooltipGroupProps as GroupProps,
TooltipProps as ProviderProps,
TooltipTriggerProps as TriggerProps,

@ -32,8 +32,7 @@ import { tooltipMorfo } from '../../../morfo/components/tooltip';
import { Soma } from '../../core/soma.svelte';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import type { TimerHandle } from '$timer';
export type TooltipState = 'closed' | 'delayed-open' | 'instant-open';
import type { TooltipState } from './types';
// ── Group Provider (coordinates skip-delay between sibling tooltips) ─────────

@ -11,6 +11,8 @@ import type { PrimitiveDivAttributes, PrimitiveButtonAttributes } from '../../ty
import type { DismissalBehavior } from '../../layers/dismissal.svelte';
import type { Side, Align, Boundary } from '../../layers/floating';
export type TooltipState = 'closed' | 'delayed-open' | 'instant-open';
export type TooltipGroupProps = {
/** Global delay before tooltips open (ms). @default 700 */
delayDuration?: number;

@ -7,9 +7,8 @@ export { default as BranchIndentGuide } from './components/tree-view-branch-inde
export { default as Item } from './components/tree-view-item.svelte';
export { default as Label } from './components/tree-view-label.svelte';
export type { SelectionMode } from './tree-view-provider.svelte';
export type {
SelectionMode,
TreeViewProps as ProviderProps,
TreeViewBranchProps as BranchProps,
TreeViewBranchControlProps as BranchControlProps,

@ -10,11 +10,10 @@ import { TREE_VIEW_LANGS } from './langs';
import { treeViewMorfo } from '../../../morfo/components/tree-view';
import type { SomaRuntime, SomaRuntimePart } from '../../runtime.svelte';
import type { SelectionMode } from './types';
const attrs = createAttrs(treeViewMorfo);
export type SelectionMode = 'single' | 'multiple';
// ── Root ─────────────────────────────────────────────────────────────────────
interface TreeViewOpts

@ -1,6 +1,7 @@
import type { WithChild, Without, OnChangeFn, Direction } from '../../types';
import type { PrimitiveDivAttributes } from '../../types';
import type { SelectionMode } from './tree-view-provider.svelte';
export type SelectionMode = 'single' | 'multiple';
export type TreeViewProps = WithChild<{
/** Unique identifier. Auto-generated if omitted. */

Loading…
Cancel
Save

Powered by TurnKey Linux.