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,189 @@
1
+ <!--
2
+ @component
3
+ InputSwitch - A toggle switch component that provides an alternative to checkboxes.
4
+ Supports labels, disabled states, and integrates with the Form component.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <InputSwitch
9
+ name="darkMode"
10
+ label="Enable dark mode"
11
+ checked={true}
12
+ />
13
+
14
+ <FormField label="Notifications">
15
+ <InputSwitch name="notifications" />
16
+ </FormField>
17
+ ```
18
+ -->
19
+ <script>
20
+ import { getContext } from "svelte"
21
+
22
+ const {
23
+ /** @type {string} - Additional CSS classes */
24
+ class: className = "",
25
+
26
+ /** @type {string} - HTML id for accessibility */
27
+ id = crypto.randomUUID(),
28
+
29
+ /** @type {string} - Input name */
30
+ name,
31
+
32
+ /** @type {string} - Label text */
33
+ label,
34
+
35
+ /** @type {boolean} - Whether the switch is checked */
36
+ checked = false,
37
+
38
+ /** @type {boolean} - Whether the switch is required */
39
+ required = false,
40
+
41
+ /** @type {boolean} - Whether the switch is disabled */
42
+ disabled = false,
43
+
44
+ /** @type {string} - Size of the switch (sm, md, lg) */
45
+ size = "md",
46
+
47
+ /** @type {string} - ARIA label for accessibility */
48
+ ariaLabel,
49
+
50
+ /** @type {(event: CustomEvent) => void} - Change event handler */
51
+ onchange,
52
+
53
+ ...restProps
54
+ } = $props()
55
+
56
+ // Get form context if available
57
+ const formContext = getContext("form")
58
+
59
+ // Switch state
60
+ let isChecked = $state(checked)
61
+
62
+ // Register with form if available
63
+ let fieldApi = $state()
64
+ if (formContext && name) {
65
+ fieldApi = formContext.registerField(name, checked)
66
+
67
+ // Update value when form field changes
68
+ $effect(() => {
69
+ const formValue = fieldApi.getValue()
70
+ if (formValue !== undefined && formValue !== isChecked) {
71
+ isChecked = !!formValue
72
+ }
73
+ })
74
+ }
75
+
76
+ // Update internal state when prop changes
77
+ $effect(() => {
78
+ if (checked !== isChecked) {
79
+ isChecked = checked
80
+ }
81
+ })
82
+
83
+ /**
84
+ * Handles switch toggle
85
+ * @param {Event} event - Change event
86
+ */
87
+ function handleChange(event) {
88
+ isChecked = event.target.checked
89
+
90
+ // Update form field if available
91
+ if (fieldApi) {
92
+ fieldApi.setValue(isChecked)
93
+ }
94
+
95
+ onchange?.(new CustomEvent("change", { detail: { checked: isChecked } }))
96
+ }
97
+
98
+ // Determine switch size classes
99
+ const switchSizeClasses = $derived(
100
+ {
101
+ sm: "w-8 h-4",
102
+ md: "w-10 h-5",
103
+ lg: "w-12 h-6",
104
+ }[size] || "w-10 h-5"
105
+ )
106
+
107
+ const thumbSizeClasses = $derived(
108
+ {
109
+ sm: "w-3 h-3",
110
+ md: "w-4 h-4",
111
+ lg: "w-5 h-5",
112
+ }[size] || "w-4 h-4"
113
+ )
114
+
115
+ const labelSizeClasses = $derived(
116
+ {
117
+ sm: "text-xs",
118
+ md: "text-sm",
119
+ lg: "text-base",
120
+ }[size] || "text-sm"
121
+ )
122
+ </script>
123
+
124
+ <label
125
+ class="input-switch-wrapper {className} {labelSizeClasses} {disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}"
126
+ >
127
+ <div class="input-switch-container">
128
+ <input
129
+ type="checkbox"
130
+ {id}
131
+ {name}
132
+ checked={isChecked}
133
+ {required}
134
+ disabled={disabled || (fieldApi && fieldApi.isDisabled())}
135
+ aria-label={ariaLabel || label}
136
+ class="input-switch-input"
137
+ onchange={handleChange}
138
+ {...restProps}
139
+ />
140
+
141
+ <span class="input-switch-track {switchSizeClasses}" aria-hidden="true">
142
+ <span
143
+ class="input-switch-thumb {thumbSizeClasses}"
144
+ class:translate-x-full={isChecked}
145
+ ></span>
146
+ </span>
147
+ </div>
148
+
149
+ {#if label}
150
+ <span class="input-switch-label">{label}</span>
151
+ {/if}
152
+ </label>
153
+
154
+ <style>
155
+ @reference "../../twintrinsic.css";
156
+
157
+ .input-switch-wrapper {
158
+ @apply inline-flex items-center gap-2;
159
+ }
160
+
161
+ .input-switch-container {
162
+ @apply relative;
163
+ }
164
+
165
+ .input-switch-input {
166
+ @apply sr-only;
167
+ }
168
+
169
+ .input-switch-track {
170
+ @apply block rounded-full bg-muted dark:bg-muted transition-colors duration-200 ease-in-out;
171
+ @apply flex items-center px-0.5;
172
+ }
173
+
174
+ .input-switch-input:checked + .input-switch-track {
175
+ @apply bg-primary-500 dark:bg-primary-400;
176
+ }
177
+
178
+ .input-switch-input:focus + .input-switch-track {
179
+ @apply ring-2 ring-offset-2 ring-primary-500 dark:ring-primary-400;
180
+ }
181
+
182
+ .input-switch-thumb {
183
+ @apply rounded-full bg-white dark:bg-white transform transition-transform duration-200 ease-in-out;
184
+ }
185
+
186
+ .input-switch-label {
187
+ @apply text-text dark:text-text;
188
+ }
189
+ </style>
@@ -0,0 +1,46 @@
1
+ export default InputSwitch;
2
+ type InputSwitch = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * InputSwitch - A toggle switch component that provides an alternative to checkboxes.
8
+ * Supports labels, disabled states, and integrates with the Form component.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <InputSwitch
13
+ * name="darkMode"
14
+ * label="Enable dark mode"
15
+ * checked={true}
16
+ * />
17
+ *
18
+ * <FormField label="Notifications">
19
+ * <InputSwitch name="notifications" />
20
+ * </FormField>
21
+ * ```
22
+ */
23
+ declare const InputSwitch: import("svelte").Component<{
24
+ class?: string;
25
+ id?: any;
26
+ name: any;
27
+ label: any;
28
+ checked?: boolean;
29
+ required?: boolean;
30
+ disabled?: boolean;
31
+ size?: string;
32
+ ariaLabel: any;
33
+ onchange: any;
34
+ } & Record<string, any>, {}, "">;
35
+ type $$ComponentProps = {
36
+ class?: string;
37
+ id?: any;
38
+ name: any;
39
+ label: any;
40
+ checked?: boolean;
41
+ required?: boolean;
42
+ disabled?: boolean;
43
+ size?: string;
44
+ ariaLabel: any;
45
+ onchange: any;
46
+ } & Record<string, any>;
@@ -0,0 +1,97 @@
1
+ <!--
2
+ @component
3
+ InvalidState - A component for displaying validation errors in forms.
4
+ Provides consistent styling and accessibility features for error messages.
5
+
6
+ Usage:
7
+ ```svelte
8
+ <InvalidState message="This field is required" />
9
+
10
+ <FormField>
11
+ <TextInput name="email" />
12
+ {#if errors.email}
13
+ <InvalidState message={errors.email} />
14
+ {/if}
15
+ </FormField>
16
+ ```
17
+ -->
18
+ <script>
19
+ const {
20
+ /** @type {string} - Additional CSS classes */
21
+ class: className = "",
22
+
23
+ /** @type {string} - Error message to display */
24
+ message,
25
+
26
+ /** @type {string} - Icon to display (HTML or SVG string) */
27
+ icon,
28
+
29
+ /** @type {boolean} - Whether to show the default icon */
30
+ showIcon = true,
31
+
32
+ /** @type {boolean} - Whether to animate the message */
33
+ animated = true,
34
+
35
+ children,
36
+ } = $props()
37
+ </script>
38
+
39
+ <div
40
+ class="invalid-state {className}"
41
+ role="alert"
42
+ aria-live="assertive"
43
+ >
44
+ <div class="invalid-state-content">
45
+ {#if showIcon}
46
+ <div class="invalid-state-icon">
47
+ {#if icon}
48
+ {@html icon}
49
+ {:else}
50
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
51
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
52
+ </svg>
53
+ {/if}
54
+ </div>
55
+ {/if}
56
+
57
+ <div class="invalid-state-message">
58
+ {#if message}
59
+ {message}
60
+ {:else}
61
+ {@render children?.()}
62
+ {/if}
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <style>
68
+ @reference "../../twintrinsic.css";
69
+
70
+ .invalid-state {
71
+ @apply mt-1 text-xs text-error-600 dark:text-error-400;
72
+ animation: invalid-state-appear 0.2s ease-in-out;
73
+ }
74
+
75
+ .invalid-state-content {
76
+ @apply flex items-start gap-1.5;
77
+ }
78
+
79
+ .invalid-state-icon {
80
+ @apply flex-shrink-0 mt-0.5;
81
+ }
82
+
83
+ .invalid-state-message {
84
+ @apply flex-grow;
85
+ }
86
+
87
+ @keyframes invalid-state-appear {
88
+ from {
89
+ opacity: 0;
90
+ transform: translateY(-4px);
91
+ }
92
+ to {
93
+ opacity: 1;
94
+ transform: translateY(0);
95
+ }
96
+ }
97
+ </style>
@@ -0,0 +1,37 @@
1
+ export default InvalidState;
2
+ type InvalidState = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<$$ComponentProps>): void;
5
+ };
6
+ /**
7
+ * InvalidState - A component for displaying validation errors in forms.
8
+ * Provides consistent styling and accessibility features for error messages.
9
+ *
10
+ * Usage:
11
+ * ```svelte
12
+ * <InvalidState message="This field is required" />
13
+ *
14
+ * <FormField>
15
+ * <TextInput name="email" />
16
+ * {#if errors.email}
17
+ * <InvalidState message={errors.email} />
18
+ * {/if}
19
+ * </FormField>
20
+ * ```
21
+ */
22
+ declare const InvalidState: import("svelte").Component<{
23
+ class?: string;
24
+ message: any;
25
+ icon: any;
26
+ showIcon?: boolean;
27
+ animated?: boolean;
28
+ children: any;
29
+ }, {}, "">;
30
+ type $$ComponentProps = {
31
+ class?: string;
32
+ message: any;
33
+ icon: any;
34
+ showIcon?: boolean;
35
+ animated?: boolean;
36
+ children: any;
37
+ };