@svelte-atoms/core 1.0.0-alpha.33 → 1.0.0-alpha.34

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 (125) hide show
  1. package/dist/components/atom/html-atom.svelte +95 -93
  2. package/dist/components/atom/html-atom.svelte.d.ts +1 -1
  3. package/dist/components/button/button.svelte +31 -31
  4. package/dist/components/chip/chip.svelte +41 -0
  5. package/dist/components/chip/chip.svelte.d.ts +6 -0
  6. package/dist/components/chip/index.d.ts +1 -0
  7. package/dist/components/chip/index.js +1 -0
  8. package/dist/components/chip/types.d.ts +11 -0
  9. package/dist/components/chip/types.js +1 -0
  10. package/dist/components/combobox/atoms.d.ts +2 -1
  11. package/dist/components/combobox/atoms.js +2 -1
  12. package/dist/components/combobox/bond.svelte.d.ts +16 -13
  13. package/dist/components/combobox/bond.svelte.js +57 -13
  14. package/dist/components/combobox/combobox-control.svelte +27 -13
  15. package/dist/components/combobox/combobox-control.svelte.d.ts +2 -10
  16. package/dist/components/combobox/combobox-item.svelte +3 -3
  17. package/dist/components/combobox/combobox-root.svelte +65 -65
  18. package/dist/components/combobox/combobox-root.svelte.d.ts +4 -4
  19. package/dist/components/combobox/combobox-selections.svelte +17 -0
  20. package/dist/components/combobox/combobox-selections.svelte.d.ts +4 -0
  21. package/dist/components/combobox/combobox.stories.svelte +25 -12
  22. package/dist/components/combobox/types.d.ts +17 -3
  23. package/dist/components/dropdown/atoms.d.ts +2 -3
  24. package/dist/components/dropdown/atoms.js +3 -3
  25. package/dist/components/dropdown/bond.svelte.d.ts +4 -4
  26. package/dist/components/dropdown/bond.svelte.js +10 -11
  27. package/dist/components/dropdown/dropdown-query.svelte +43 -54
  28. package/dist/components/dropdown/dropdown-query.svelte.d.ts +3 -34
  29. package/dist/components/dropdown/dropdown-root.svelte +15 -2
  30. package/dist/components/dropdown/dropdown-root.svelte.d.ts +4 -16
  31. package/dist/components/dropdown/dropdown-selection.svelte +55 -0
  32. package/dist/components/dropdown/{dropdown-value.svelte.d.ts → dropdown-selection.svelte.d.ts} +5 -15
  33. package/dist/components/dropdown/dropdown-selections.svelte +62 -0
  34. package/dist/components/dropdown/dropdown-selections.svelte.d.ts +5 -0
  35. package/dist/components/dropdown/dropdown.stories.svelte +93 -49
  36. package/dist/components/dropdown/index.d.ts +5 -1
  37. package/dist/components/dropdown/index.js +5 -1
  38. package/dist/components/dropdown/item/controller.svelte.d.ts +1 -1
  39. package/dist/components/dropdown/item/controller.svelte.js +2 -2
  40. package/dist/components/dropdown/item/dropdown-item.svelte +0 -2
  41. package/dist/components/dropdown/runes.svelte.d.ts +6 -2
  42. package/dist/components/dropdown/runes.svelte.js +1 -1
  43. package/dist/components/dropdown/types.d.ts +34 -2
  44. package/dist/components/index.d.ts +2 -0
  45. package/dist/components/index.js +2 -0
  46. package/dist/components/menu/bond.svelte.js +4 -2
  47. package/dist/components/menu/item/controller.svelte.d.ts +1 -0
  48. package/dist/components/menu/item/controller.svelte.js +5 -0
  49. package/dist/components/popover/bond.svelte.js +1 -2
  50. package/dist/components/root/root.css +119 -119
  51. package/dist/components/stepper/README.md +38 -0
  52. package/dist/components/stepper/atoms.d.ts +5 -0
  53. package/dist/components/stepper/atoms.js +5 -0
  54. package/dist/components/stepper/attachments.svelte.d.ts +2 -0
  55. package/dist/components/stepper/attachments.svelte.js +5 -0
  56. package/dist/components/stepper/bond.svelte.d.ts +56 -0
  57. package/dist/components/stepper/bond.svelte.js +99 -0
  58. package/dist/components/stepper/index.d.ts +3 -0
  59. package/dist/components/stepper/index.js +3 -0
  60. package/dist/components/stepper/step/README.md +97 -0
  61. package/dist/components/stepper/step/atoms.d.ts +7 -0
  62. package/dist/components/stepper/step/atoms.js +7 -0
  63. package/dist/components/stepper/step/attachments.svelte.d.ts +2 -0
  64. package/dist/components/stepper/step/attachments.svelte.js +5 -0
  65. package/dist/components/stepper/step/bond.svelte.d.ts +99 -0
  66. package/dist/components/stepper/step/bond.svelte.js +153 -0
  67. package/dist/components/stepper/step/index.d.ts +3 -0
  68. package/dist/components/stepper/step/index.js +2 -0
  69. package/dist/components/stepper/step/step-body.svelte +39 -0
  70. package/dist/components/stepper/step/step-body.svelte.d.ts +26 -0
  71. package/dist/components/stepper/step/step-description.svelte +33 -0
  72. package/dist/components/stepper/step/step-description.svelte.d.ts +26 -0
  73. package/dist/components/stepper/step/step-header.svelte +34 -0
  74. package/dist/components/stepper/step/step-header.svelte.d.ts +26 -0
  75. package/dist/components/stepper/step/step-indicator.svelte +63 -0
  76. package/dist/components/stepper/step/step-indicator.svelte.d.ts +26 -0
  77. package/dist/components/stepper/step/step-root.svelte +42 -0
  78. package/dist/components/stepper/step/step-root.svelte.d.ts +31 -0
  79. package/dist/components/stepper/step/step-separator.svelte +48 -0
  80. package/dist/components/stepper/step/step-separator.svelte.d.ts +26 -0
  81. package/dist/components/stepper/step/step-title.svelte +33 -0
  82. package/dist/components/stepper/step/step-title.svelte.d.ts +26 -0
  83. package/dist/components/stepper/step/types.d.ts +91 -0
  84. package/dist/components/stepper/step/types.js +1 -0
  85. package/dist/components/stepper/stepper-body.svelte +43 -0
  86. package/dist/components/stepper/stepper-body.svelte.d.ts +26 -0
  87. package/dist/components/stepper/stepper-content.svelte +45 -0
  88. package/dist/components/stepper/stepper-content.svelte.d.ts +26 -0
  89. package/dist/components/stepper/stepper-footer.svelte +31 -0
  90. package/dist/components/stepper/stepper-footer.svelte.d.ts +26 -0
  91. package/dist/components/stepper/stepper-header.svelte +39 -0
  92. package/dist/components/stepper/stepper-header.svelte.d.ts +26 -0
  93. package/dist/components/stepper/stepper-root.svelte +60 -0
  94. package/dist/components/stepper/stepper-root.svelte.d.ts +31 -0
  95. package/dist/components/stepper/stepper.stories.svelte +264 -0
  96. package/dist/components/stepper/stepper.stories.svelte.d.ts +4 -0
  97. package/dist/components/stepper/types.d.ts +63 -0
  98. package/dist/components/stepper/types.js +1 -0
  99. package/dist/components/tabs/atoms.d.ts +1 -0
  100. package/dist/components/tabs/atoms.js +1 -0
  101. package/dist/components/tabs/bond.svelte.d.ts +18 -5
  102. package/dist/components/tabs/bond.svelte.js +13 -0
  103. package/dist/components/tabs/tab/bond.svelte.d.ts +7 -7
  104. package/dist/components/tabs/tab/bond.svelte.js +9 -15
  105. package/dist/components/tabs/tab/tab-body.svelte +43 -52
  106. package/dist/components/tabs/tab/tab-description.svelte +33 -41
  107. package/dist/components/tabs/tab/tab-header.svelte +61 -71
  108. package/dist/components/tabs/tab/tab-header.svelte.d.ts +1 -1
  109. package/dist/components/tabs/tab/tab-root.svelte +51 -86
  110. package/dist/components/tabs/tab/tab-root.svelte.d.ts +1 -7
  111. package/dist/components/tabs/tabs-body.svelte +35 -41
  112. package/dist/components/tabs/tabs-body.svelte.d.ts +2 -11
  113. package/dist/components/tabs/tabs-content.svelte +51 -0
  114. package/dist/components/tabs/tabs-content.svelte.d.ts +26 -0
  115. package/dist/components/tabs/tabs-header.svelte +32 -40
  116. package/dist/components/tabs/tabs-header.svelte.d.ts +2 -10
  117. package/dist/components/tabs/tabs-root.svelte +55 -66
  118. package/dist/components/tabs/tabs-root.svelte.d.ts +5 -16
  119. package/dist/components/tabs/tabs.stories.svelte +70 -56
  120. package/dist/components/tabs/types.d.ts +24 -29
  121. package/dist/context/preset.svelte.d.ts +1 -1
  122. package/package.json +33 -6
  123. package/dist/components/dropdown/dropdown-value.svelte +0 -60
  124. package/dist/components/dropdown/dropdown-values.svelte +0 -17
  125. package/dist/components/dropdown/dropdown-values.svelte.d.ts +0 -5
@@ -0,0 +1,99 @@
1
+ import { StepperState } from '../bond.svelte.js';
2
+ import { Bond, BondState, type BondStateProps } from '../../../shared/bond.svelte.js';
3
+ export type StepBondProps = BondStateProps & {
4
+ index: number;
5
+ disabled: boolean;
6
+ completed: boolean;
7
+ error: boolean;
8
+ };
9
+ export type StepBondElements = {
10
+ root: HTMLElement;
11
+ indicator: HTMLElement;
12
+ header: HTMLElement;
13
+ title: HTMLElement;
14
+ description: HTMLElement;
15
+ body?: HTMLElement;
16
+ separator?: HTMLElement;
17
+ };
18
+ export declare class StepBond extends Bond<StepBondProps, StepBondState, StepBondElements> {
19
+ static CONTEXT_KEY: string;
20
+ constructor(state: StepBondState);
21
+ share(): this;
22
+ root(): {
23
+ readonly [x: symbol]: (node: HTMLElement) => void;
24
+ readonly 'data-stepper': string;
25
+ readonly 'data-atom': string;
26
+ readonly 'data-kind': "step";
27
+ readonly 'data-index': number;
28
+ readonly 'data-active': boolean;
29
+ readonly 'data-completed': boolean;
30
+ readonly 'data-disabled': boolean | undefined;
31
+ readonly 'data-error': boolean;
32
+ readonly 'aria-disabled': boolean | undefined;
33
+ readonly 'aria-describedby': `step-description-${string}`;
34
+ readonly 'aria-labelledby': `step-title-${string}`;
35
+ readonly id: `step-${string}`;
36
+ readonly role: "group";
37
+ };
38
+ indicator(): {
39
+ readonly [x: symbol]: (node: HTMLElement) => void;
40
+ readonly 'data-kind': "step-indicator";
41
+ readonly 'aria-current': "step" | undefined;
42
+ readonly 'data-active': boolean;
43
+ readonly 'data-completed': boolean;
44
+ readonly 'data-disabled': boolean | undefined;
45
+ readonly 'data-error': boolean;
46
+ readonly role: "presentation";
47
+ };
48
+ header(): {
49
+ readonly [x: symbol]: (node: HTMLElement) => void;
50
+ readonly 'data-kind': "step-header";
51
+ readonly id: `step-header-${string}`;
52
+ readonly 'data-active': boolean;
53
+ readonly 'data-completed': boolean;
54
+ readonly 'data-disabled': boolean | undefined;
55
+ readonly 'data-error': boolean;
56
+ };
57
+ title(): {
58
+ readonly [x: symbol]: (node: HTMLElement) => void;
59
+ readonly 'data-kind': "step-title";
60
+ readonly id: `step-title-${string}`;
61
+ };
62
+ description(): {
63
+ readonly [x: symbol]: (node: HTMLElement) => void;
64
+ readonly 'data-kind': "step-description";
65
+ readonly id: `step-description-${string}`;
66
+ };
67
+ body(): {
68
+ readonly [x: symbol]: (node: HTMLElement) => void;
69
+ readonly 'data-kind': "step-body";
70
+ readonly id: `step-body-${string}`;
71
+ readonly 'data-active': boolean;
72
+ readonly 'data-completed': boolean;
73
+ readonly 'data-disabled': boolean | undefined;
74
+ readonly 'data-error': boolean;
75
+ };
76
+ separator(): {
77
+ readonly [x: symbol]: (node: HTMLElement) => void;
78
+ readonly 'data-kind': "step-separator";
79
+ readonly 'aria-hidden': "true";
80
+ readonly role: "presentation";
81
+ readonly 'data-active': boolean;
82
+ readonly 'data-completed': boolean;
83
+ readonly 'data-disabled': boolean | undefined;
84
+ readonly 'data-error': boolean;
85
+ };
86
+ static get(): StepBond | undefined;
87
+ static set(bond: StepBond): StepBond;
88
+ }
89
+ export declare class StepBondState extends BondState<StepBondProps> {
90
+ #private;
91
+ constructor(props: () => StepBondProps);
92
+ get isActive(): boolean;
93
+ get isCompleted(): boolean;
94
+ get isDisabled(): boolean | undefined;
95
+ get stepper(): StepperState | undefined;
96
+ mount(): () => void;
97
+ unmount: () => void;
98
+ activate(): void;
99
+ }
@@ -0,0 +1,153 @@
1
+ import { createAttachmentKey } from 'svelte/attachments';
2
+ import { getContext, setContext } from 'svelte';
3
+ import { StepperBond, StepperState } from '../bond.svelte.js';
4
+ import { Bond, BondState } from '../../../shared/bond.svelte.js';
5
+ export class StepBond extends Bond {
6
+ static CONTEXT_KEY = '@atoms/context/stepper/step';
7
+ constructor(state) {
8
+ super(state);
9
+ }
10
+ share() {
11
+ return StepBond.set(this);
12
+ }
13
+ root() {
14
+ const state = this.state;
15
+ return {
16
+ 'data-stepper': state?.stepper?.id ?? '',
17
+ 'data-atom': this.id ?? '',
18
+ 'data-kind': 'step',
19
+ 'data-index': state?.props.index ?? 0,
20
+ 'data-active': state?.isActive,
21
+ 'data-completed': state?.isCompleted,
22
+ 'data-disabled': state?.isDisabled,
23
+ 'data-error': state?.props.error,
24
+ 'aria-disabled': state?.isDisabled,
25
+ 'aria-describedby': `step-description-${this.id}`,
26
+ 'aria-labelledby': `step-title-${this.id}`,
27
+ id: `step-${this.id}`,
28
+ role: 'group',
29
+ [createAttachmentKey()]: (node) => {
30
+ this.elements.root = node;
31
+ }
32
+ };
33
+ }
34
+ indicator() {
35
+ const state = this.state;
36
+ return {
37
+ 'data-kind': 'step-indicator',
38
+ 'aria-current': state?.isActive ? 'step' : undefined,
39
+ 'data-active': state?.isActive,
40
+ 'data-completed': state?.isCompleted,
41
+ 'data-disabled': state?.isDisabled,
42
+ 'data-error': state?.props.error,
43
+ role: 'presentation',
44
+ [createAttachmentKey()]: (node) => {
45
+ this.elements.indicator = node;
46
+ }
47
+ };
48
+ }
49
+ header() {
50
+ const state = this.state;
51
+ return {
52
+ 'data-kind': 'step-header',
53
+ id: `step-header-${this.id}`,
54
+ 'data-active': state?.isActive,
55
+ 'data-completed': state?.isCompleted,
56
+ 'data-disabled': state?.isDisabled,
57
+ 'data-error': state?.props.error,
58
+ [createAttachmentKey()]: (node) => {
59
+ this.elements.header = node;
60
+ }
61
+ };
62
+ }
63
+ title() {
64
+ return {
65
+ 'data-kind': 'step-title',
66
+ id: `step-title-${this.id}`,
67
+ [createAttachmentKey()]: (node) => {
68
+ this.elements.title = node;
69
+ }
70
+ };
71
+ }
72
+ description() {
73
+ return {
74
+ 'data-kind': 'step-description',
75
+ id: `step-description-${this.id}`,
76
+ [createAttachmentKey()]: (node) => {
77
+ this.elements.description = node;
78
+ }
79
+ };
80
+ }
81
+ body() {
82
+ const state = this.state;
83
+ return {
84
+ 'data-kind': 'step-body',
85
+ id: `step-body-${this.id}`,
86
+ 'data-active': state?.isActive,
87
+ 'data-completed': state?.isCompleted,
88
+ 'data-disabled': state?.isDisabled,
89
+ 'data-error': state?.props.error,
90
+ [createAttachmentKey()]: (node) => {
91
+ this.elements.body = node;
92
+ }
93
+ };
94
+ }
95
+ separator() {
96
+ const state = this.state;
97
+ return {
98
+ 'data-kind': 'step-separator',
99
+ 'aria-hidden': 'true',
100
+ role: 'presentation',
101
+ 'data-active': state?.isActive,
102
+ 'data-completed': state?.isCompleted,
103
+ 'data-disabled': state?.isDisabled,
104
+ 'data-error': state?.props.error,
105
+ [createAttachmentKey()]: (node) => {
106
+ this.elements.separator = node;
107
+ }
108
+ };
109
+ }
110
+ static get() {
111
+ return getContext(StepBond.CONTEXT_KEY);
112
+ }
113
+ static set(bond) {
114
+ return setContext(StepBond.CONTEXT_KEY, bond);
115
+ }
116
+ }
117
+ export class StepBondState extends BondState {
118
+ #stepper;
119
+ constructor(props) {
120
+ super(props);
121
+ const stepperBond = StepperBond.get();
122
+ if (!stepperBond) {
123
+ throw new Error('Step must be used within a Stepper context.');
124
+ }
125
+ this.#stepper = stepperBond.state;
126
+ }
127
+ get isActive() {
128
+ return this.#stepper?.props.step === this.props.index;
129
+ }
130
+ get isCompleted() {
131
+ const stepperStep = this.#stepper?.props.step;
132
+ return this.props.completed || (typeof stepperStep === 'number' && stepperStep > this.props.index);
133
+ }
134
+ get isDisabled() {
135
+ return (this.props.disabled ||
136
+ (this.#stepper?.props.linear && this.props.index > this.#stepper.props.step + 1));
137
+ }
138
+ get stepper() {
139
+ return this.#stepper;
140
+ }
141
+ mount() {
142
+ this.#stepper?.mountStep(this.props.index, {});
143
+ return this.unmount;
144
+ }
145
+ unmount = () => {
146
+ this.#stepper?.unmountStep(this.props.index);
147
+ };
148
+ activate() {
149
+ if (!this.isDisabled) {
150
+ this.#stepper?.navigation.goto(this.props.index);
151
+ }
152
+ }
153
+ }
@@ -0,0 +1,3 @@
1
+ export * as Step from './atoms';
2
+ export * from './bond.svelte';
3
+ export type * from './types';
@@ -0,0 +1,2 @@
1
+ export * as Step from './atoms';
2
+ export * from './bond.svelte';
@@ -0,0 +1,39 @@
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { type Base } from '../../atom';
3
+ import { StepBond } from './bond.svelte';
4
+ import { StepperBond } from '../bond.svelte';
5
+ import type { StepContentProps } from './types';
6
+ import { Stack } from '../../stack';
7
+
8
+ const stepBond = StepBond.get();
9
+ const stepperBond = StepperBond.get();
10
+
11
+ let {
12
+ class: klass = '',
13
+ base=Stack.Item,
14
+ children = undefined,
15
+ preset = 'stepper.step.content' as const,
16
+ ...restProps
17
+ }: StepContentProps<E, B> = $props();
18
+
19
+ const contentProps = $derived({
20
+ class: klass,
21
+ preset,
22
+ base,
23
+ ...restProps
24
+ });
25
+
26
+ // Register content snippet with props and children with stepper on mount
27
+ $effect(() => {
28
+ if (stepBond && stepperBond && children) {
29
+ const index = stepBond.state.props.index;
30
+ stepperBond.state.registerStepContent(index, contentProps, children);
31
+
32
+ return () => {
33
+ stepperBond.state.unregisterStepContent(index);
34
+ };
35
+ }
36
+ });
37
+ </script>
38
+
39
+ <!-- Content is teleported to Stepper.Content, so we don't render anything here -->
@@ -0,0 +1,26 @@
1
+ import { type Base } from '../../atom';
2
+ import type { StepContentProps } from './types';
3
+ declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
4
+ props: StepContentProps<E, B>;
5
+ exports: {};
6
+ bindings: "";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
11
+ props(): ReturnType<typeof $$render<E, B>>['props'];
12
+ events(): ReturnType<typeof $$render<E, B>>['events'];
13
+ slots(): ReturnType<typeof $$render<E, B>>['slots'];
14
+ bindings(): "";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<E, B>['exports']>;
21
+ <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
+ }
24
+ declare const StepBody: $$IsomorphicComponent;
25
+ type StepBody<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof StepBody<E, B>>;
26
+ export default StepBody;
@@ -0,0 +1,33 @@
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base">
2
+ import { HtmlAtom as Atom, type Base } from '../../atom';
3
+ import { StepBond } from './bond.svelte';
4
+ import type { StepDescriptionProps } from './types';
5
+
6
+ const bond = StepBond.get();
7
+
8
+ if(!bond) {
9
+ throw new Error('StepDescription must be used within a Step component.');
10
+ }
11
+
12
+ let {
13
+ class: klass = '',
14
+ preset = 'stepper.step.description',
15
+ as="p",
16
+ children = undefined,
17
+ ...restProps
18
+ }: StepDescriptionProps<E, B> = $props();
19
+
20
+ const descriptionProps = $derived({
21
+ ...bond?.description(),
22
+ ...restProps
23
+ });
24
+ </script>
25
+
26
+ <Atom
27
+ {as}
28
+ {preset}
29
+ class={['text-xs text-muted-foreground', '$preset', klass]}
30
+ {...descriptionProps}
31
+ >
32
+ {@render children?.({ step: bond })}
33
+ </Atom>
@@ -0,0 +1,26 @@
1
+ import { type Base } from '../../atom';
2
+ import type { StepDescriptionProps } from './types';
3
+ declare function $$render<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(): {
4
+ props: StepDescriptionProps<E, B>;
5
+ exports: {};
6
+ bindings: "";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> {
11
+ props(): ReturnType<typeof $$render<E, B>>['props'];
12
+ events(): ReturnType<typeof $$render<E, B>>['events'];
13
+ slots(): ReturnType<typeof $$render<E, B>>['slots'];
14
+ bindings(): "";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<E, B>['exports']>;
21
+ <E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
+ }
24
+ declare const StepDescription: $$IsomorphicComponent;
25
+ type StepDescription<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> = InstanceType<typeof StepDescription<E, B>>;
26
+ export default StepDescription;
@@ -0,0 +1,34 @@
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom as Atom, type Base } from '../../atom';
3
+ import { StepBond } from './bond.svelte';
4
+ import type { StepHeaderProps } from './types';
5
+
6
+ const bond = StepBond.get();
7
+
8
+ if(!bond) {
9
+ throw new Error('StepHeader must be used within a Step component.');
10
+ }
11
+
12
+ let {
13
+ class: klass = '',
14
+ preset = 'stepper.step.header',
15
+ children = undefined,
16
+ ...restProps
17
+ }: StepHeaderProps<E, B> = $props();
18
+
19
+
20
+ const headerProps = $derived({
21
+ ...bond?.header(),
22
+ ...restProps
23
+ });
24
+ </script>
25
+
26
+ <Atom
27
+ as="div"
28
+ {bond}
29
+ {preset}
30
+ class={['font-medium text-sm flex flex-col', '$preset', klass]}
31
+ {...headerProps}
32
+ >
33
+ {@render children?.({ step: bond })}
34
+ </Atom>
@@ -0,0 +1,26 @@
1
+ import { type Base } from '../../atom';
2
+ import type { StepHeaderProps } from './types';
3
+ declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
4
+ props: StepHeaderProps<E, B>;
5
+ exports: {};
6
+ bindings: "";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
11
+ props(): ReturnType<typeof $$render<E, B>>['props'];
12
+ events(): ReturnType<typeof $$render<E, B>>['events'];
13
+ slots(): ReturnType<typeof $$render<E, B>>['slots'];
14
+ bindings(): "";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<E, B>['exports']>;
21
+ <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
+ }
24
+ declare const StepHeader: $$IsomorphicComponent;
25
+ type StepHeader<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof StepHeader<E, B>>;
26
+ export default StepHeader;
@@ -0,0 +1,63 @@
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom as Atom, type Base } from '../../atom';
3
+ import { StepBond } from './bond.svelte';
4
+ import type { StepIndicatorProps } from './types';
5
+
6
+ const bond = StepBond.get();
7
+
8
+ if(!bond) {
9
+ throw new Error('StepIndicator must be used within a Step component');
10
+ }
11
+
12
+ let {
13
+ class: klass = '',
14
+ preset = 'stepper.step.indicator',
15
+ children = undefined,
16
+ ...restProps
17
+ }: StepIndicatorProps<E, B> = $props();
18
+
19
+
20
+ const indicatorProps = $derived({
21
+ ...bond?.indicator(),
22
+ ...restProps
23
+ });
24
+
25
+ const index = $derived(bond?.state?.props?.index ?? 0);
26
+ </script>
27
+
28
+ <Atom
29
+ {bond}
30
+ {preset}
31
+ class={[
32
+ 'flex h-8 w-8 items-center justify-center border-border rounded-full border-2 transition-colors',
33
+ 'transition-all',
34
+ bond?.state?.isActive
35
+ ? 'bg-primary border-primary text-primary-foreground font-bold'
36
+ : bond?.state?.isCompleted
37
+ ? 'bg-primary border-primary text-primary-foreground'
38
+ : 'border-border bg-background',
39
+ '$preset',
40
+ klass
41
+ ]}
42
+ {...indicatorProps}
43
+ >
44
+ {#if children}
45
+ {@render children?.({ step: bond })}
46
+ {:else if bond?.state?.isCompleted}
47
+ <svg
48
+ class="w-4 h-4"
49
+ fill="none"
50
+ stroke="currentColor"
51
+ viewBox="0 0 24 24"
52
+ >
53
+ <path
54
+ stroke-linecap="round"
55
+ stroke-linejoin="round"
56
+ stroke-width="2"
57
+ d="M5 13l4 4L19 7"
58
+ />
59
+ </svg>
60
+ {:else}
61
+ {index + 1}
62
+ {/if}
63
+ </Atom>
@@ -0,0 +1,26 @@
1
+ import { type Base } from '../../atom';
2
+ import type { StepIndicatorProps } from './types';
3
+ declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
4
+ props: StepIndicatorProps<E, B>;
5
+ exports: {};
6
+ bindings: "";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
11
+ props(): ReturnType<typeof $$render<E, B>>['props'];
12
+ events(): ReturnType<typeof $$render<E, B>>['events'];
13
+ slots(): ReturnType<typeof $$render<E, B>>['slots'];
14
+ bindings(): "";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<E, B>['exports']>;
21
+ <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
+ }
24
+ declare const StepIndicator: $$IsomorphicComponent;
25
+ type StepIndicator<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof StepIndicator<E, B>>;
26
+ export default StepIndicator;
@@ -0,0 +1,42 @@
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { defineProperty, defineState } from '../../../utils';
3
+ import { type Base } from '../../atom';
4
+ import { StepBond, StepBondState, type StepBondProps } from './bond.svelte';
5
+ import type { StepRootProps } from './types';
6
+ import type { Factory } from '../../../types';
7
+ import { onDestroy } from 'svelte';
8
+
9
+ let {
10
+ index,
11
+ disabled = false,
12
+ completed = false,
13
+ optional = false,
14
+ children = undefined,
15
+ factory = _factory as Factory<StepBond>,
16
+ }: StepRootProps<E, B> = $props();
17
+
18
+ const stepProps = defineState<StepBondProps>([
19
+ defineProperty('index', () => index),
20
+ defineProperty('disabled', () => disabled),
21
+ defineProperty('completed', () => completed),
22
+ defineProperty('optional', () => optional),
23
+ ]);
24
+
25
+ const bond = $derived(factory(stepProps).share());
26
+
27
+ bond.state.mount();
28
+ onDestroy(()=> {
29
+ bond.state.unmount();
30
+ });
31
+
32
+ function _factory(props = stepProps) {
33
+ const stepState = new StepBondState(() => props);
34
+ return new StepBond(stepState);
35
+ }
36
+
37
+ export function getBond() {
38
+ return bond;
39
+ }
40
+ </script>
41
+
42
+ {@render children?.({ step: bond })}
@@ -0,0 +1,31 @@
1
+ import { type Base } from '../../atom';
2
+ import { StepBond } from './bond.svelte';
3
+ import type { StepRootProps } from './types';
4
+ declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
5
+ props: StepRootProps<E, B>;
6
+ exports: {
7
+ getBond: () => StepBond;
8
+ };
9
+ bindings: "";
10
+ slots: {};
11
+ events: {};
12
+ };
13
+ declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
14
+ props(): ReturnType<typeof $$render<E, B>>['props'];
15
+ events(): ReturnType<typeof $$render<E, B>>['events'];
16
+ slots(): ReturnType<typeof $$render<E, B>>['slots'];
17
+ bindings(): "";
18
+ exports(): {
19
+ getBond: () => StepBond;
20
+ };
21
+ }
22
+ interface $$IsomorphicComponent {
23
+ new <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
24
+ $$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
25
+ } & ReturnType<__sveltets_Render<E, B>['exports']>;
26
+ <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
27
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
28
+ }
29
+ declare const StepRoot: $$IsomorphicComponent;
30
+ type StepRoot<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof StepRoot<E, B>>;
31
+ export default StepRoot;
@@ -0,0 +1,48 @@
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom as Atom, type Base } from '../../atom';
3
+ import { StepBond } from './bond.svelte';
4
+ import { StepperBond } from '../bond.svelte';
5
+ import type { StepSeparatorProps } from './types';
6
+
7
+ const bond = StepBond.get();
8
+
9
+ if(!bond){
10
+ throw new Error('StepSeparator must be used within a Step component.');
11
+ }
12
+
13
+ const stepperBond = StepperBond.get();
14
+
15
+ if(!stepperBond){
16
+ throw new Error('StepSeparator must be used within a Stepper component.');
17
+ }
18
+
19
+ let {
20
+ class: klass = '',
21
+ preset = 'stepper.step.separator',
22
+ children = undefined,
23
+ ...restProps
24
+ }: StepSeparatorProps<E, B> = $props();
25
+
26
+
27
+ const separatorProps = $derived({
28
+ ...bond?.separator(),
29
+ ...restProps
30
+ });
31
+
32
+ const isVertical = $derived(stepperBond?.state?.props?.orientation === 'vertical');
33
+ </script>
34
+
35
+ <Atom
36
+ {bond}
37
+ {preset}
38
+ class={[
39
+ 'flex-1 data-[active=true]:bg-primary data-[completed=true]:bg-primary/70',
40
+ isVertical ? 'h-8 w-0.5 mx-auto' : 'h-0.5 w-full my-auto',
41
+ 'bg-border',
42
+ '$preset',
43
+ klass
44
+ ]}
45
+ {...separatorProps}
46
+ >
47
+ {@render children?.({ step: bond })}
48
+ </Atom>