twintrinsic 0.0.1

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 (212) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +150 -0
  3. package/dist/App/App.svelte +54 -0
  4. package/dist/App/App.svelte.d.ts +65 -0
  5. package/dist/Section.svelte +25 -0
  6. package/dist/Section.svelte.d.ts +34 -0
  7. package/dist/actions/clickOutside.d.ts +9 -0
  8. package/dist/actions/clickOutside.js +19 -0
  9. package/dist/actions/index.d.ts +1 -0
  10. package/dist/actions/index.js +1 -0
  11. package/dist/components/Accordion/Accordion.svelte +75 -0
  12. package/dist/components/Accordion/Accordion.svelte.d.ts +39 -0
  13. package/dist/components/Accordion/AccordionItem.svelte +150 -0
  14. package/dist/components/Accordion/AccordionItem.svelte.d.ts +30 -0
  15. package/dist/components/App/App.story.md +8 -0
  16. package/dist/components/App/App.story.svelte +170 -0
  17. package/dist/components/App/App.story.svelte.d.ts +22 -0
  18. package/dist/components/App/App.svelte +77 -0
  19. package/dist/components/App/App.svelte.d.ts +66 -0
  20. package/dist/components/App/Split.svelte +346 -0
  21. package/dist/components/App/Split.svelte.d.ts +54 -0
  22. package/dist/components/App/index.d.ts +2 -0
  23. package/dist/components/App/index.js +3 -0
  24. package/dist/components/AppHeader/AppHeader.svelte +439 -0
  25. package/dist/components/AppHeader/AppHeader.svelte.d.ts +24 -0
  26. package/dist/components/Avatar/Avatar.svelte +300 -0
  27. package/dist/components/Avatar/Avatar.svelte.d.ts +48 -0
  28. package/dist/components/Avatar/AvatarGroup.svelte +185 -0
  29. package/dist/components/Avatar/AvatarGroup.svelte.d.ts +46 -0
  30. package/dist/components/Badge/Badge.svelte +186 -0
  31. package/dist/components/Badge/Badge.svelte.d.ts +51 -0
  32. package/dist/components/BottomBar/BottomBar.svelte +146 -0
  33. package/dist/components/BottomBar/BottomBar.svelte.d.ts +38 -0
  34. package/dist/components/Breadcrumb/Breadcrumb.svelte +77 -0
  35. package/dist/components/Breadcrumb/Breadcrumb.svelte.d.ts +42 -0
  36. package/dist/components/Breadcrumb/BreadcrumbItem.svelte +171 -0
  37. package/dist/components/Breadcrumb/BreadcrumbItem.svelte.d.ts +38 -0
  38. package/dist/components/Button/Button.svelte +252 -0
  39. package/dist/components/Button/Button.svelte.d.ts +80 -0
  40. package/dist/components/Button/ButtonGroup.svelte +127 -0
  41. package/dist/components/Button/ButtonGroup.svelte.d.ts +44 -0
  42. package/dist/components/Card/Card.svelte +152 -0
  43. package/dist/components/Card/Card.svelte.d.ts +55 -0
  44. package/dist/components/Carousel/Carousel.svelte +461 -0
  45. package/dist/components/Carousel/Carousel.svelte.d.ts +79 -0
  46. package/dist/components/Carousel/CarouselItem.svelte +149 -0
  47. package/dist/components/Carousel/CarouselItem.svelte.d.ts +35 -0
  48. package/dist/components/Chip/Chip.svelte +288 -0
  49. package/dist/components/Chip/Chip.svelte.d.ts +71 -0
  50. package/dist/components/Chip/ChipGroup.svelte +190 -0
  51. package/dist/components/Chip/ChipGroup.svelte.d.ts +71 -0
  52. package/dist/components/CodeBlock/CodeBlock.svelte +356 -0
  53. package/dist/components/CodeBlock/CodeBlock.svelte.d.ts +44 -0
  54. package/dist/components/CodeBlock/index.d.ts +1 -0
  55. package/dist/components/CodeBlock/index.js +1 -0
  56. package/dist/components/CodeBlockSpeed/CodeBlockSpeed.svelte +145 -0
  57. package/dist/components/CodeBlockSpeed/CodeBlockSpeed.svelte.d.ts +44 -0
  58. package/dist/components/CodeEditor/CodeEditor.svelte +229 -0
  59. package/dist/components/CodeEditor/CodeEditor.svelte.d.ts +23 -0
  60. package/dist/components/Combobox/Combobox.svelte +279 -0
  61. package/dist/components/Combobox/Combobox.svelte.d.ts +34 -0
  62. package/dist/components/Container/Container.svelte +45 -0
  63. package/dist/components/Container/Container.svelte.d.ts +36 -0
  64. package/dist/components/DataTable/DataTable.svelte +879 -0
  65. package/dist/components/DataTable/DataTable.svelte.d.ts +102 -0
  66. package/dist/components/Form/AutoComplete.svelte +357 -0
  67. package/dist/components/Form/AutoComplete.svelte.d.ts +73 -0
  68. package/dist/components/Form/Calendar.svelte +429 -0
  69. package/dist/components/Form/Calendar.svelte.d.ts +53 -0
  70. package/dist/components/Form/Checkbox.svelte +196 -0
  71. package/dist/components/Form/Checkbox.svelte.d.ts +50 -0
  72. package/dist/components/Form/ColorPicker.svelte +396 -0
  73. package/dist/components/Form/ColorPicker.svelte.d.ts +43 -0
  74. package/dist/components/Form/Combobox.svelte +645 -0
  75. package/dist/components/Form/Combobox.svelte.d.ts +93 -0
  76. package/dist/components/Form/Dropdown.svelte +773 -0
  77. package/dist/components/Form/Dropdown.svelte.d.ts +81 -0
  78. package/dist/components/Form/FileUpload.svelte +796 -0
  79. package/dist/components/Form/FileUpload.svelte.d.ts +78 -0
  80. package/dist/components/Form/FloatLabel.svelte +245 -0
  81. package/dist/components/Form/FloatLabel.svelte.d.ts +44 -0
  82. package/dist/components/Form/Form.svelte +281 -0
  83. package/dist/components/Form/Form.svelte.d.ts +54 -0
  84. package/dist/components/Form/FormField.svelte +218 -0
  85. package/dist/components/Form/FormField.svelte.d.ts +47 -0
  86. package/dist/components/Form/Input.svelte +340 -0
  87. package/dist/components/Form/Input.svelte.d.ts +79 -0
  88. package/dist/components/Form/InputSwitch.svelte +189 -0
  89. package/dist/components/Form/InputSwitch.svelte.d.ts +46 -0
  90. package/dist/components/Form/InvalidState.svelte +97 -0
  91. package/dist/components/Form/InvalidState.svelte.d.ts +37 -0
  92. package/dist/components/Form/Knob.svelte +537 -0
  93. package/dist/components/Form/Knob.svelte.d.ts +78 -0
  94. package/dist/components/Form/ListInput.svelte +469 -0
  95. package/dist/components/Form/ListInput.svelte.d.ts +70 -0
  96. package/dist/components/Form/Listbox.svelte +513 -0
  97. package/dist/components/Form/Listbox.svelte.d.ts +74 -0
  98. package/dist/components/Form/NumberInput.svelte +452 -0
  99. package/dist/components/Form/NumberInput.svelte.d.ts +82 -0
  100. package/dist/components/Form/Radio.svelte +192 -0
  101. package/dist/components/Form/Radio.svelte.d.ts +53 -0
  102. package/dist/components/Form/RadioGroup.svelte +155 -0
  103. package/dist/components/Form/RadioGroup.svelte.d.ts +48 -0
  104. package/dist/components/Form/Rating.svelte +380 -0
  105. package/dist/components/Form/Rating.svelte.d.ts +64 -0
  106. package/dist/components/Form/Select.svelte +436 -0
  107. package/dist/components/Form/Select.svelte.d.ts +49 -0
  108. package/dist/components/Form/SelectGroup.svelte +34 -0
  109. package/dist/components/Form/SelectGroup.svelte.d.ts +33 -0
  110. package/dist/components/Form/Slider.svelte +622 -0
  111. package/dist/components/Form/Slider.svelte.d.ts +73 -0
  112. package/dist/components/Form/Switch.svelte +192 -0
  113. package/dist/components/Form/Switch.svelte.d.ts +46 -0
  114. package/dist/components/Form/TextInput.svelte +274 -0
  115. package/dist/components/Form/TextInput.svelte.d.ts +74 -0
  116. package/dist/components/Form/Textarea.svelte +207 -0
  117. package/dist/components/Form/Textarea.svelte.d.ts +62 -0
  118. package/dist/components/Icon/Icon.svelte +140 -0
  119. package/dist/components/Icon/Icon.svelte.d.ts +25 -0
  120. package/dist/components/Icon/index.d.ts +1 -0
  121. package/dist/components/Icon/index.js +1 -0
  122. package/dist/components/Lazy/Lazy.svelte +158 -0
  123. package/dist/components/Lazy/Lazy.svelte.d.ts +42 -0
  124. package/dist/components/Masonry/Masonry.svelte +299 -0
  125. package/dist/components/Masonry/Masonry.svelte.d.ts +55 -0
  126. package/dist/components/Menu/Menu/Menu.svelte +65 -0
  127. package/dist/components/Menu/Menu/Menu.svelte.d.ts +17 -0
  128. package/dist/components/Menu/Menu/MenuItem.svelte +90 -0
  129. package/dist/components/Menu/Menu/MenuItem.svelte.d.ts +27 -0
  130. package/dist/components/Modal/Modal.svelte +334 -0
  131. package/dist/components/Modal/Modal.svelte.d.ts +55 -0
  132. package/dist/components/Panel/Card.svelte +141 -0
  133. package/dist/components/Panel/Card.svelte.d.ts +52 -0
  134. package/dist/components/Panel/Hero/Hero.story.md +9 -0
  135. package/dist/components/Panel/Hero/Hero.story.svelte +49 -0
  136. package/dist/components/Panel/Hero/Hero.story.svelte.d.ts +21 -0
  137. package/dist/components/Panel/Hero/Hero.svelte +24 -0
  138. package/dist/components/Panel/Hero/Hero.svelte.d.ts +32 -0
  139. package/dist/components/Panel/LazyPanel.svelte +110 -0
  140. package/dist/components/Panel/LazyPanel.svelte.d.ts +46 -0
  141. package/dist/components/Panel/Panel.svelte +205 -0
  142. package/dist/components/Panel/Panel.svelte.d.ts +23 -0
  143. package/dist/components/Progress/Progress.svelte +220 -0
  144. package/dist/components/Progress/Progress.svelte.d.ts +61 -0
  145. package/dist/components/Separator/Separator.svelte +109 -0
  146. package/dist/components/Separator/Separator.svelte.d.ts +35 -0
  147. package/dist/components/Sidebar/Sidebar.svelte +213 -0
  148. package/dist/components/Sidebar/Sidebar.svelte.d.ts +60 -0
  149. package/dist/components/Skeleton/Skeleton.svelte +170 -0
  150. package/dist/components/Skeleton/Skeleton.svelte.d.ts +48 -0
  151. package/dist/components/Stepper/Stepper.svelte +111 -0
  152. package/dist/components/Stepper/Stepper.svelte.d.ts +54 -0
  153. package/dist/components/Stepper/StepperStep.svelte +369 -0
  154. package/dist/components/Stepper/StepperStep.svelte.d.ts +63 -0
  155. package/dist/components/Table/Table.svelte +167 -0
  156. package/dist/components/Table/Table.svelte.d.ts +56 -0
  157. package/dist/components/Table/TableBody.svelte +41 -0
  158. package/dist/components/Table/TableBody.svelte.d.ts +33 -0
  159. package/dist/components/Table/TableCell.svelte +76 -0
  160. package/dist/components/Table/TableCell.svelte.d.ts +36 -0
  161. package/dist/components/Table/TableHead.svelte +41 -0
  162. package/dist/components/Table/TableHead.svelte.d.ts +32 -0
  163. package/dist/components/Table/TableHeader.svelte +148 -0
  164. package/dist/components/Table/TableHeader.svelte.d.ts +42 -0
  165. package/dist/components/Table/TableRow.svelte +99 -0
  166. package/dist/components/Table/TableRow.svelte.d.ts +40 -0
  167. package/dist/components/Tabs/Tab.svelte +145 -0
  168. package/dist/components/Tabs/Tab.svelte.d.ts +36 -0
  169. package/dist/components/Tabs/TabList.svelte +60 -0
  170. package/dist/components/Tabs/TabList.svelte.d.ts +32 -0
  171. package/dist/components/Tabs/TabPanel.svelte +118 -0
  172. package/dist/components/Tabs/TabPanel.svelte.d.ts +38 -0
  173. package/dist/components/Tabs/Tabs.svelte +287 -0
  174. package/dist/components/Tabs/Tabs.svelte.d.ts +50 -0
  175. package/dist/components/Tag/Tag.svelte +260 -0
  176. package/dist/components/Tag/Tag.svelte.d.ts +54 -0
  177. package/dist/components/Tag/TagGroup.svelte +147 -0
  178. package/dist/components/Tag/TagGroup.svelte.d.ts +62 -0
  179. package/dist/components/ThemeToggle/ThemeToggle.svelte +93 -0
  180. package/dist/components/ThemeToggle/ThemeToggle.svelte.d.ts +12 -0
  181. package/dist/components/Timeline/Timeline.svelte +144 -0
  182. package/dist/components/Timeline/Timeline.svelte.d.ts +48 -0
  183. package/dist/components/Timeline/TimelineItem.svelte +391 -0
  184. package/dist/components/Timeline/TimelineItem.svelte.d.ts +63 -0
  185. package/dist/components/Toast/Toast.svelte +313 -0
  186. package/dist/components/Toast/Toast.svelte.d.ts +44 -0
  187. package/dist/components/Toast/toastStore.d.ts +40 -0
  188. package/dist/components/Toast/toastStore.js +293 -0
  189. package/dist/components/Tooltip/Tooltip.svelte +282 -0
  190. package/dist/components/Tooltip/Tooltip.svelte.d.ts +55 -0
  191. package/dist/components/Tree/Tree.svelte +129 -0
  192. package/dist/components/Tree/Tree.svelte.d.ts +61 -0
  193. package/dist/components/Tree/TreeNode.svelte +332 -0
  194. package/dist/components/Tree/TreeNode.svelte.d.ts +55 -0
  195. package/dist/components/icons/TwintrinsicLogo.svelte +73 -0
  196. package/dist/components/icons/TwintrinsicLogo.svelte.d.ts +17 -0
  197. package/dist/components/icons/twintrinsic-source.svg +73 -0
  198. package/dist/components/icons/twintrinsic.svg +38 -0
  199. package/dist/docs/EventsTable.svelte +86 -0
  200. package/dist/docs/EventsTable.svelte.d.ts +27 -0
  201. package/dist/docs/PropsTable.svelte +103 -0
  202. package/dist/docs/PropsTable.svelte.d.ts +28 -0
  203. package/dist/docs/index.d.ts +2 -0
  204. package/dist/docs/index.js +2 -0
  205. package/dist/helpers/detectLanguage.d.ts +6 -0
  206. package/dist/helpers/detectLanguage.js +60 -0
  207. package/dist/helpers/index.d.ts +1 -0
  208. package/dist/helpers/index.js +1 -0
  209. package/dist/index.d.ts +86 -0
  210. package/dist/index.js +94 -0
  211. package/dist/twintrinsic.css +347 -0
  212. package/package.json +98 -0
@@ -0,0 +1,111 @@
1
+ <!--
2
+ @component
3
+ Stepper - A component for displaying multi-step processes or wizards.
4
+ Provides consistent styling, accessibility features, and various display options.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <Stepper activeStep={1}>
9
+ <StepperStep title="Account" completed>Account details</StepperStep>
10
+ <StepperStep title="Profile" active>Profile information</StepperStep>
11
+ <StepperStep title="Review">Review and submit</StepperStep>
12
+ </Stepper>
13
+
14
+ <Stepper
15
+ activeStep={2}
16
+ variant="primary"
17
+ orientation="vertical"
18
+ alternativeLabels
19
+ >
20
+ <StepperStep title="Step 1" completed>Step 1 content</StepperStep>
21
+ <StepperStep title="Step 2" completed>Step 2 content</StepperStep>
22
+ <StepperStep title="Step 3" active>Step 3 content</StepperStep>
23
+ <StepperStep title="Step 4">Step 4 content</StepperStep>
24
+ </Stepper>
25
+ ```
26
+ -->
27
+ <script>
28
+ import { setContext } from "svelte"
29
+
30
+ const {
31
+ /** @type {string} - Additional CSS classes */
32
+ class: className = "",
33
+
34
+ /** @type {string} - HTML id for accessibility */
35
+ id = crypto.randomUUID(),
36
+
37
+ /** @type {number} - Index of the active step (0-based) */
38
+ activeStep = 0,
39
+
40
+ /** @type {string} - Visual style variant */
41
+ variant = "primary",
42
+
43
+ /** @type {string} - Orientation of the stepper (horizontal, vertical) */
44
+ orientation = "horizontal",
45
+
46
+ /** @type {boolean} - Whether to place labels below the step icons */
47
+ alternativeLabels = false,
48
+
49
+ /** @type {boolean} - Whether to show linear progression only */
50
+ linear = true,
51
+
52
+ /** @type {boolean} - Whether to show the connector between steps */
53
+ connector = true,
54
+
55
+ /** @type {string} - ARIA label for the stepper */
56
+ ariaLabel = "Step progress",
57
+
58
+ children,
59
+ } = $props()
60
+
61
+ // Provide context for child components
62
+ $effect(() => {
63
+ setContext("stepper", {
64
+ activeStep,
65
+ variant,
66
+ orientation,
67
+ alternativeLabels,
68
+ linear,
69
+ connector,
70
+ getStepState: (index) => {
71
+ if (index < activeStep) return "completed"
72
+ if (index === activeStep) return "active"
73
+ return "pending"
74
+ },
75
+ })
76
+ })
77
+ </script>
78
+
79
+ <div
80
+ {id}
81
+ class="
82
+ stepper
83
+ stepper-{orientation}
84
+ {alternativeLabels ? 'stepper-alternative-labels' : ''}
85
+ {className}
86
+ "
87
+ role="navigation"
88
+ aria-label={ariaLabel}
89
+ >
90
+ {@render children?.()}
91
+ </div>
92
+
93
+ <style>
94
+ @reference "../../twintrinsic.css";
95
+
96
+ .stepper {
97
+ @apply w-full;
98
+ }
99
+
100
+ .stepper-horizontal {
101
+ @apply flex flex-row items-start;
102
+ }
103
+
104
+ .stepper-vertical {
105
+ @apply flex flex-col;
106
+ }
107
+
108
+ .stepper-alternative-labels.stepper-horizontal {
109
+ @apply flex-col;
110
+ }
111
+ </style>
@@ -0,0 +1,54 @@
1
+ export default Stepper;
2
+ type Stepper = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * Stepper - A component for displaying multi-step processes or wizards.
8
+ * Provides consistent styling, accessibility features, and various display options.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <Stepper activeStep={1}>
13
+ * <StepperStep title="Account" completed>Account details</StepperStep>
14
+ * <StepperStep title="Profile" active>Profile information</StepperStep>
15
+ * <StepperStep title="Review">Review and submit</StepperStep>
16
+ * </Stepper>
17
+ *
18
+ * <Stepper
19
+ * activeStep={2}
20
+ * variant="primary"
21
+ * orientation="vertical"
22
+ * alternativeLabels
23
+ * >
24
+ * <StepperStep title="Step 1" completed>Step 1 content</StepperStep>
25
+ * <StepperStep title="Step 2" completed>Step 2 content</StepperStep>
26
+ * <StepperStep title="Step 3" active>Step 3 content</StepperStep>
27
+ * <StepperStep title="Step 4">Step 4 content</StepperStep>
28
+ * </Stepper>
29
+ * ```
30
+ */
31
+ declare const Stepper: import("svelte").Component<{
32
+ class?: string;
33
+ id?: any;
34
+ activeStep?: number;
35
+ variant?: string;
36
+ orientation?: string;
37
+ alternativeLabels?: boolean;
38
+ linear?: boolean;
39
+ connector?: boolean;
40
+ ariaLabel?: string;
41
+ children: any;
42
+ }, {}, "">;
43
+ type $$ComponentProps = {
44
+ class?: string;
45
+ id?: any;
46
+ activeStep?: number;
47
+ variant?: string;
48
+ orientation?: string;
49
+ alternativeLabels?: boolean;
50
+ linear?: boolean;
51
+ connector?: boolean;
52
+ ariaLabel?: string;
53
+ children: any;
54
+ };
@@ -0,0 +1,369 @@
1
+ <!--
2
+ @component
3
+ StepperStep - An individual step within a Stepper component.
4
+ Provides consistent styling, accessibility features, and various display options.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <StepperStep title="Account Details">
9
+ Content for the account details step
10
+ </StepperStep>
11
+
12
+ <StepperStep
13
+ title="Review"
14
+ subtitle="Verify your information"
15
+ icon="<svg>...</svg>"
16
+ completed
17
+ >
18
+ Review step content
19
+ </StepperStep>
20
+
21
+ <StepperStep
22
+ title="Payment"
23
+ optional
24
+ error={paymentError}
25
+ >
26
+ Payment step content
27
+ </StepperStep>
28
+ ```
29
+ -->
30
+ <script>
31
+ import { getContext, onMount } from "svelte"
32
+
33
+ const {
34
+ /** @type {string} - Additional CSS classes */
35
+ class: className = "",
36
+
37
+ /** @type {string} - HTML id for accessibility */
38
+ id = crypto.randomUUID(),
39
+
40
+ /** @type {string} - Step title */
41
+ title,
42
+
43
+ /** @type {string} - Step subtitle or description */
44
+ subtitle,
45
+
46
+ /** @type {string} - Custom icon (HTML or SVG string) */
47
+ icon,
48
+
49
+ /** @type {boolean} - Whether the step is optional */
50
+ optional = false,
51
+
52
+ /** @type {boolean} - Whether the step is disabled */
53
+ disabled = false,
54
+
55
+ /** @type {boolean} - Whether the step is completed */
56
+ completed = false,
57
+
58
+ /** @type {boolean} - Whether the step is active */
59
+ active = false,
60
+
61
+ /** @type {boolean} - Whether the step has an error */
62
+ error = false,
63
+
64
+ /** @type {boolean} - Whether to expand the step content (for vertical orientation) */
65
+ expanded = false,
66
+
67
+ /** @type {Function} - Click handler for the step */
68
+ onClick,
69
+
70
+ children,
71
+ } = $props()
72
+
73
+ // Get stepper context
74
+ const stepperContext = getContext("stepper")
75
+
76
+ // Component state
77
+ let stepElement
78
+ let index = $state(-1)
79
+
80
+ // Register with parent on mount
81
+ onMount(() => {
82
+ if (stepElement) {
83
+ // Find our index among siblings
84
+ const parent = stepElement.parentElement
85
+ if (parent) {
86
+ const steps = Array.from(parent.children)
87
+ index = steps.indexOf(stepElement)
88
+ }
89
+ }
90
+ })
91
+
92
+ // Determine step state based on context and props
93
+ const stepState = $derived(() => {
94
+ if (error) return "error"
95
+ if (completed) return "completed"
96
+ if (active) return "active"
97
+
98
+ // If not explicitly set, use context
99
+ if (stepperContext && index >= 0) {
100
+ return stepperContext.getStepState(index)
101
+ }
102
+
103
+ return "pending"
104
+ })
105
+
106
+ // Determine if this is the last step
107
+ const isLast = $derived(!stepElement?.nextElementSibling)
108
+
109
+ // Determine if step is clickable
110
+ const isClickable = $derived(!!onClick && !disabled)
111
+
112
+ // Determine if content should be shown
113
+ const showContent = $derived(
114
+ stepperContext?.orientation === "vertical" && (expanded || stepState === "active") && !!children
115
+ )
116
+
117
+ // Determine variant from context
118
+ const variant = $derived(stepperContext?.variant || "primary")
119
+
120
+ // Determine orientation from context
121
+ const orientation = $derived(stepperContext?.orientation || "horizontal")
122
+
123
+ // Determine if using alternative labels
124
+ const alternativeLabels = $derived(stepperContext?.alternativeLabels || false)
125
+
126
+ // Determine if showing connector
127
+ const showConnector = $derived(stepperContext?.connector !== false && !isLast)
128
+
129
+ // Determine variant classes
130
+ const variantClasses = $derived(
131
+ {
132
+ default: "text-muted dark:text-muted",
133
+ primary: "text-primary-500 dark:text-primary-500",
134
+ secondary: "text-secondary-500 dark:text-secondary-500",
135
+ success: "text-success-500 dark:text-success-500",
136
+ warning: "text-warning-500 dark:text-warning-500",
137
+ error: "text-error-500 dark:text-error-500",
138
+ info: "text-info-500 dark:text-info-500",
139
+ }[variant] || "text-primary-500 dark:text-primary-500"
140
+ )
141
+
142
+ // Handle click on step
143
+ function handleClick() {
144
+ if (isClickable) {
145
+ onClick(index)
146
+ }
147
+ }
148
+ </script>
149
+
150
+ <div
151
+ {id}
152
+ class="
153
+ stepper-step
154
+ stepper-step-{orientation}
155
+ stepper-step-{stepState}
156
+ {alternativeLabels ? 'stepper-step-alternative-labels' : ''}
157
+ {disabled ? 'stepper-step-disabled' : ''}
158
+ {isClickable ? 'stepper-step-clickable' : ''}
159
+ {className}
160
+ "
161
+ role="listitem"
162
+ aria-current={stepState === 'active' ? 'step' : undefined}
163
+ aria-disabled={disabled ? true : undefined}
164
+ bind:this={stepElement}
165
+ >
166
+ <div
167
+ class="stepper-step-header"
168
+ onclick={handleClick}
169
+ onkeydown={(e) => e.key === 'Enter' && handleClick()}
170
+ tabindex={isClickable ? 0 : undefined}
171
+ role={isClickable ? 'button' : undefined}
172
+ >
173
+ <div class="stepper-step-icon-container">
174
+ <div class="stepper-step-icon {variantClasses}">
175
+ {#if stepState === 'completed'}
176
+ {#if icon}
177
+ <span class="stepper-step-custom-icon">
178
+ {@html icon}
179
+ </span>
180
+ {:else}
181
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
182
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
183
+ </svg>
184
+ {/if}
185
+ {:else if stepState === 'error'}
186
+ <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
187
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
188
+ </svg>
189
+ {:else if icon}
190
+ <span class="stepper-step-custom-icon">
191
+ {@html icon}
192
+ </span>
193
+ {:else}
194
+ <span class="stepper-step-number">{index + 1}</span>
195
+ {/if}
196
+ </div>
197
+
198
+ {#if showConnector}
199
+ <div class="stepper-step-connector">
200
+ <span class="stepper-step-connector-line"></span>
201
+ </div>
202
+ {/if}
203
+ </div>
204
+
205
+ <div class="stepper-step-label">
206
+ <span class="stepper-step-title">
207
+ {title}
208
+ {#if optional}
209
+ <span class="stepper-step-optional">(optional)</span>
210
+ {/if}
211
+ </span>
212
+
213
+ {#if subtitle}
214
+ <span class="stepper-step-subtitle">
215
+ {subtitle}
216
+ </span>
217
+ {/if}
218
+ </div>
219
+ </div>
220
+
221
+ {#if showContent}
222
+ <div class="stepper-step-content">
223
+ {@render children?.()}
224
+ </div>
225
+ {/if}
226
+ </div>
227
+
228
+ <style>
229
+ @reference "../../twintrinsic.css";
230
+
231
+ .stepper-step {
232
+ @apply relative;
233
+ }
234
+
235
+ /* Horizontal layout */
236
+ .stepper-step-horizontal {
237
+ @apply flex-1;
238
+ }
239
+
240
+ .stepper-step-horizontal .stepper-step-header {
241
+ @apply flex flex-col items-center;
242
+ }
243
+
244
+ .stepper-step-horizontal .stepper-step-icon-container {
245
+ @apply flex-1 flex items-center;
246
+ @apply w-full;
247
+ }
248
+
249
+ .stepper-step-horizontal .stepper-step-connector {
250
+ @apply flex-1 ml-2;
251
+ }
252
+
253
+ .stepper-step-horizontal .stepper-step-connector-line {
254
+ @apply block w-full h-0.5;
255
+ @apply bg-border dark:bg-border;
256
+ }
257
+
258
+ .stepper-step-horizontal.stepper-step-completed .stepper-step-connector-line,
259
+ .stepper-step-horizontal.stepper-step-active .stepper-step-connector-line {
260
+ @apply bg-current;
261
+ }
262
+
263
+ /* Alternative labels for horizontal */
264
+ .stepper-step-horizontal.stepper-step-alternative-labels .stepper-step-header {
265
+ @apply flex-row items-start;
266
+ }
267
+
268
+ .stepper-step-horizontal.stepper-step-alternative-labels .stepper-step-icon-container {
269
+ @apply w-auto;
270
+ }
271
+
272
+ .stepper-step-horizontal.stepper-step-alternative-labels .stepper-step-label {
273
+ @apply ml-3;
274
+ }
275
+
276
+ /* Vertical layout */
277
+ .stepper-step-vertical {
278
+ @apply mb-4;
279
+ }
280
+
281
+ .stepper-step-vertical .stepper-step-header {
282
+ @apply flex flex-row items-start;
283
+ }
284
+
285
+ .stepper-step-vertical .stepper-step-icon-container {
286
+ @apply flex flex-col items-center;
287
+ }
288
+
289
+ .stepper-step-vertical .stepper-step-connector {
290
+ @apply flex-1 mt-2;
291
+ @apply h-full min-h-8;
292
+ }
293
+
294
+ .stepper-step-vertical .stepper-step-connector-line {
295
+ @apply block h-full w-0.5;
296
+ @apply bg-border dark:bg-border;
297
+ }
298
+
299
+ .stepper-step-vertical.stepper-step-completed .stepper-step-connector-line,
300
+ .stepper-step-vertical.stepper-step-active .stepper-step-connector-line {
301
+ @apply bg-current;
302
+ }
303
+
304
+ .stepper-step-vertical .stepper-step-label {
305
+ @apply ml-3;
306
+ }
307
+
308
+ .stepper-step-vertical .stepper-step-content {
309
+ @apply ml-12 mt-2 mb-4;
310
+ }
311
+
312
+ /* Common styles */
313
+ .stepper-step-icon {
314
+ @apply flex items-center justify-center;
315
+ @apply w-8 h-8 rounded-full;
316
+ @apply bg-muted/10 dark:bg-muted/10;
317
+ @apply text-muted dark:text-muted;
318
+ @apply z-10;
319
+ }
320
+
321
+ .stepper-step-active .stepper-step-icon {
322
+ @apply bg-current/10;
323
+ }
324
+
325
+ .stepper-step-completed .stepper-step-icon {
326
+ @apply bg-current/10;
327
+ }
328
+
329
+ .stepper-step-error .stepper-step-icon {
330
+ @apply bg-error-100 dark:bg-error-900;
331
+ @apply text-error-500 dark:text-error-500;
332
+ }
333
+
334
+ .stepper-step-title {
335
+ @apply text-sm font-medium;
336
+ @apply text-text dark:text-text;
337
+ }
338
+
339
+ .stepper-step-active .stepper-step-title {
340
+ @apply text-current;
341
+ }
342
+
343
+ .stepper-step-subtitle {
344
+ @apply text-xs;
345
+ @apply text-muted dark:text-muted;
346
+ @apply block mt-0.5;
347
+ }
348
+
349
+ .stepper-step-optional {
350
+ @apply text-xs font-normal;
351
+ @apply text-muted dark:text-muted;
352
+ @apply ml-1;
353
+ }
354
+
355
+ .stepper-step-clickable {
356
+ @apply cursor-pointer;
357
+ }
358
+
359
+ .stepper-step-clickable .stepper-step-header {
360
+ @apply hover:opacity-80;
361
+ @apply focus:outline-none focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400 focus:ring-offset-2 rounded;
362
+ @apply transition-opacity duration-150;
363
+ }
364
+
365
+ .stepper-step-disabled {
366
+ @apply opacity-50 cursor-not-allowed;
367
+ @apply pointer-events-none;
368
+ }
369
+ </style>
@@ -0,0 +1,63 @@
1
+ export default StepperStep;
2
+ type StepperStep = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * StepperStep - An individual step within a Stepper component.
8
+ * Provides consistent styling, accessibility features, and various display options.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <StepperStep title="Account Details">
13
+ * Content for the account details step
14
+ * </StepperStep>
15
+ *
16
+ * <StepperStep
17
+ * title="Review"
18
+ * subtitle="Verify your information"
19
+ * icon="<svg>...</svg>"
20
+ * completed
21
+ * >
22
+ * Review step content
23
+ * </StepperStep>
24
+ *
25
+ * <StepperStep
26
+ * title="Payment"
27
+ * optional
28
+ * error={paymentError}
29
+ * >
30
+ * Payment step content
31
+ * </StepperStep>
32
+ * ```
33
+ */
34
+ declare const StepperStep: import("svelte").Component<{
35
+ class?: string;
36
+ id?: any;
37
+ title: any;
38
+ subtitle: any;
39
+ icon: any;
40
+ optional?: boolean;
41
+ disabled?: boolean;
42
+ completed?: boolean;
43
+ active?: boolean;
44
+ error?: boolean;
45
+ expanded?: boolean;
46
+ onClick: any;
47
+ children: any;
48
+ }, {}, "">;
49
+ type $$ComponentProps = {
50
+ class?: string;
51
+ id?: any;
52
+ title: any;
53
+ subtitle: any;
54
+ icon: any;
55
+ optional?: boolean;
56
+ disabled?: boolean;
57
+ completed?: boolean;
58
+ active?: boolean;
59
+ error?: boolean;
60
+ expanded?: boolean;
61
+ onClick: any;
62
+ children: any;
63
+ };