@flightlesslabs/dodo-ui 0.6.5 → 0.7.0

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 (241) hide show
  1. package/dist/index.d.ts +32 -9
  2. package/dist/index.js +12 -2
  3. package/dist/stories/Home.mdx +4 -6
  4. package/dist/stories/components/Form/Button/Button.stories.svelte +16 -37
  5. package/dist/stories/components/Form/Button/Button.svelte +45 -47
  6. package/dist/stories/components/Form/Button/Button.svelte.d.ts +16 -12
  7. package/dist/stories/components/Form/Button/Color/Color.stories.svelte +23 -48
  8. package/dist/stories/components/Form/Button/Events/Events.stories.svelte +1 -7
  9. package/dist/stories/components/Form/Button/IconButton/IconButton.stories.svelte +4 -12
  10. package/dist/stories/components/Form/Button/Roundness/Roundness.stories.svelte +5 -31
  11. package/dist/stories/components/Form/Button/Size/Size.stories.svelte +3 -9
  12. package/dist/stories/components/Form/Button/Variant/Variant.stories.svelte +5 -8
  13. package/dist/stories/components/Form/FormControl/FormControl.stories.svelte +11 -12
  14. package/dist/stories/components/Form/FormControl/FormControl.svelte +6 -8
  15. package/dist/stories/components/Form/FormControl/FormControl.svelte.d.ts +1 -1
  16. package/dist/stories/components/Form/Label/Label.stories.svelte +1 -11
  17. package/dist/stories/components/Form/Label/Label.svelte +6 -5
  18. package/dist/stories/components/Form/Label/Label.svelte.d.ts +1 -3
  19. package/dist/stories/components/Form/Message/Color/Color.stories.svelte +9 -9
  20. package/dist/stories/components/Form/Message/Message.stories.svelte +5 -13
  21. package/dist/stories/components/Form/Message/Message.svelte +5 -7
  22. package/dist/stories/components/Form/Message/Message.svelte.d.ts +4 -6
  23. package/dist/stories/components/Form/Message/Size/Size.stories.svelte +3 -5
  24. package/dist/stories/components/Form/PasswordInput/Events/Events.stories.svelte +8 -72
  25. package/dist/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +5 -3
  26. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +26 -33
  27. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +6 -5
  28. package/dist/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +4 -4
  29. package/dist/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +2 -2
  30. package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte +120 -0
  31. package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte.d.ts +18 -0
  32. package/dist/stories/components/Form/Select/Events/Events.stories.svelte +138 -0
  33. package/dist/stories/components/Form/Select/Options/OptionFormat.mdx +40 -0
  34. package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte +28 -0
  35. package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte.d.ts +18 -0
  36. package/dist/stories/components/Form/Select/Select.stories.svelte +114 -0
  37. package/dist/stories/components/Form/Select/Select.stories.svelte.d.ts +22 -0
  38. package/dist/stories/components/Form/Select/Select.svelte +285 -0
  39. package/dist/stories/components/Form/Select/Select.svelte.d.ts +87 -0
  40. package/dist/stories/components/Form/Select/Size/Size.stories.svelte +24 -0
  41. package/dist/stories/components/Form/Select/Size/Size.stories.svelte.d.ts +18 -0
  42. package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte +39 -0
  43. package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte.d.ts +18 -0
  44. package/dist/stories/components/Form/TextInput/Events/Events.stories.svelte +7 -63
  45. package/dist/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +4 -4
  46. package/dist/stories/components/Form/TextInput/TextInput.stories.svelte +6 -4
  47. package/dist/stories/components/Form/TextInput/TextInput.svelte +18 -30
  48. package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +10 -5
  49. package/dist/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +4 -4
  50. package/dist/stories/components/Layout/Menu/Menu.stories.svelte +65 -0
  51. package/dist/stories/components/Layout/Menu/Menu.stories.svelte.d.ts +21 -0
  52. package/dist/stories/components/Layout/Menu/Menu.svelte +30 -0
  53. package/dist/stories/components/Layout/Menu/Menu.svelte.d.ts +23 -0
  54. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte +30 -0
  55. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte.d.ts +21 -0
  56. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +164 -0
  57. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte.d.ts +49 -0
  58. package/dist/stories/components/Layout/Menu/MenuItem/Size/Size.stories.svelte +16 -0
  59. package/dist/stories/components/Layout/Menu/MenuItem/Type/Type.stories.svelte +21 -0
  60. package/dist/stories/components/{Form/SimpleSelect/WithIcon/WithIcon.stories.svelte.d.ts → Layout/Menu/MenuItem/Type/Type.stories.svelte.d.ts} +3 -3
  61. package/dist/stories/components/Layout/Menu/Size/Size.stories.svelte +37 -0
  62. package/dist/stories/components/{Form/SimpleSelect/Roundness/Roundness.stories.svelte.d.ts → Layout/Menu/Size/Size.stories.svelte.d.ts} +3 -3
  63. package/dist/stories/components/Layout/Paper/Color/Color.stories.svelte +63 -0
  64. package/dist/stories/components/Layout/Paper/Color/Color.stories.svelte.d.ts +26 -0
  65. package/dist/stories/components/Layout/Paper/Paper.stories.svelte +25 -16
  66. package/dist/stories/components/Layout/Paper/Paper.svelte +211 -14
  67. package/dist/stories/components/Layout/Paper/Paper.svelte.d.ts +20 -9
  68. package/dist/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +8 -13
  69. package/dist/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +6 -24
  70. package/dist/stories/components/Layout/Paper/utils/scss/mixins.scss +46 -0
  71. package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte +19 -0
  72. package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte.d.ts +26 -0
  73. package/dist/stories/components/Layout/Separator/Separator.stories.svelte +26 -0
  74. package/dist/stories/components/Layout/Separator/Separator.stories.svelte.d.ts +21 -0
  75. package/dist/stories/components/Layout/Separator/Separator.svelte +66 -0
  76. package/dist/stories/components/Layout/Separator/Separator.svelte.d.ts +22 -0
  77. package/dist/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
  78. package/dist/stories/developer tools/Intro.mdx +2 -0
  79. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.stories.svelte +49 -0
  80. package/dist/stories/{components/Form/SimpleSelect/SimpleSelect.stories.svelte.d.ts → developer tools/components/DynamicInput/DynamicInput.stories.svelte.d.ts } +5 -7
  81. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte +92 -0
  82. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte.d.ts +60 -0
  83. package/{src/lib/stories/components/Form/TextInput/Size/Size.stories.svelte → dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte } +4 -4
  84. package/dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte.d.ts +26 -0
  85. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +5 -5
  86. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +19 -15
  87. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte.d.ts +4 -3
  88. package/dist/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +4 -4
  89. package/dist/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +4 -4
  90. package/dist/stories/developer tools/components/Popper/Popper.stories.svelte +119 -0
  91. package/dist/stories/developer tools/components/Popper/Popper.stories.svelte.d.ts +21 -0
  92. package/dist/stories/developer tools/components/Popper/Popper.svelte +77 -0
  93. package/dist/stories/developer tools/components/Popper/Popper.svelte.d.ts +50 -0
  94. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte +60 -0
  95. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte.d.ts +21 -0
  96. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +66 -0
  97. package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte.d.ts +34 -0
  98. package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.d.ts +21 -0
  99. package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.js +62 -0
  100. package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte +89 -0
  101. package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte.d.ts +18 -0
  102. package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte +111 -0
  103. package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte.d.ts +18 -0
  104. package/dist/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +6 -8
  105. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +4 -7
  106. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte +8 -5
  107. package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte.d.ts +2 -2
  108. package/dist/stories/developer tools/directives/clickOutside/clickOutside.d.ts +3 -0
  109. package/dist/stories/developer tools/directives/clickOutside/clickOutside.js +14 -0
  110. package/dist/stories/developer tools/directives/clickOutside/index.mdx +25 -0
  111. package/dist/stories/{philosophy/Colors/Colors.mdx → developer tools/philosophy/Colors/Colors.mdx } +2 -2
  112. package/dist/stories/{philosophy/Colors/Swatches/Palette.svelte → developer tools/philosophy/Colors/Swatches/Palette.svelte } +1 -1
  113. package/dist/stories/{philosophy/Colors/Swatches/Swatch.svelte → developer tools/philosophy/Colors/Swatches/Swatch.svelte } +1 -1
  114. package/dist/stories/{philosophy/Colors/Swatches/Swatches.svelte → developer tools/philosophy/Colors/Swatches/Swatches.svelte } +1 -1
  115. package/dist/stories/{philosophy/Colors/utils/color.js → developer tools/philosophy/Colors/utils/color.js } +1 -1
  116. package/dist/stories/{philosophy/Themes.mdx → developer tools/philosophy/Themes.mdx } +1 -1
  117. package/dist/styles/_colors.css +44 -44
  118. package/dist/styles/_components.css +6 -3
  119. package/dist/styles/_shadow.css +13 -20
  120. package/dist/styles/_space.css +7 -0
  121. package/dist/styles/_z-index.css +9 -0
  122. package/dist/styles/global.css +2 -0
  123. package/dist/types/colors.d.ts +7 -0
  124. package/dist/types/colors.js +10 -0
  125. package/dist/types/position.d.ts +4 -0
  126. package/dist/types/position.js +2 -0
  127. package/dist/types/roundness.d.ts +3 -0
  128. package/dist/types/roundness.js +1 -0
  129. package/dist/types/shadow.d.ts +3 -0
  130. package/dist/types/shadow.js +1 -0
  131. package/dist/types/size.d.ts +3 -0
  132. package/dist/types/size.js +1 -0
  133. package/dist/types/weight.d.ts +3 -0
  134. package/dist/types/weight.js +1 -0
  135. package/package.json +26 -24
  136. package/src/lib/index.ts +61 -15
  137. package/src/lib/stories/components/Form/Button/Button.svelte +39 -36
  138. package/src/lib/stories/components/Form/FormControl/FormControl.svelte +9 -11
  139. package/src/lib/stories/components/Form/Label/Label.svelte +5 -8
  140. package/src/lib/stories/components/Form/Message/Message.svelte +11 -16
  141. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +50 -50
  142. package/src/lib/stories/components/Form/Select/Select.svelte +501 -0
  143. package/src/lib/stories/components/Form/TextInput/TextInput.svelte +43 -60
  144. package/src/lib/stories/components/Layout/Menu/Menu.svelte +65 -0
  145. package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +268 -0
  146. package/src/lib/stories/components/Layout/Paper/Paper.svelte +154 -27
  147. package/src/lib/stories/components/Layout/Paper/utils/scss/mixins.scss +46 -0
  148. package/src/lib/stories/components/Layout/Separator/Separator.svelte +96 -0
  149. package/src/lib/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
  150. package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte +195 -0
  151. package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +22 -18
  152. package/src/lib/stories/developer tools/components/Popper/Popper.svelte +159 -0
  153. package/src/lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +120 -0
  154. package/src/lib/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.ts +87 -0
  155. package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte +8 -6
  156. package/src/lib/stories/developer tools/directives/clickOutside/clickOutside.ts +17 -0
  157. package/src/lib/stories/{philosophy/Colors/Swatches/Palette.svelte → developer tools/philosophy/Colors/Swatches/Palette.svelte } +1 -1
  158. package/src/lib/stories/{philosophy/Colors/Swatches/Swatch.svelte → developer tools/philosophy/Colors/Swatches/Swatch.svelte } +1 -1
  159. package/src/lib/stories/{philosophy/Colors/Swatches/Swatches.svelte → developer tools/philosophy/Colors/Swatches/Swatches.svelte } +1 -1
  160. package/src/lib/stories/{philosophy/Colors/utils/color.ts → developer tools/philosophy/Colors/utils/color.ts } +1 -1
  161. package/src/lib/styles/_colors.css +44 -44
  162. package/src/lib/styles/_components.css +6 -3
  163. package/src/lib/styles/_shadow.css +13 -20
  164. package/src/lib/styles/_space.css +7 -0
  165. package/src/lib/styles/_z-index.css +9 -0
  166. package/src/lib/styles/global.css +2 -0
  167. package/src/lib/types/colors.ts +16 -0
  168. package/src/lib/types/position.ts +5 -0
  169. package/src/lib/types/roundness.ts +3 -0
  170. package/src/lib/types/shadow.ts +3 -0
  171. package/src/lib/types/size.ts +3 -0
  172. package/src/lib/types/weight.ts +3 -0
  173. package/dist/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -74
  174. package/dist/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
  175. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -59
  176. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -69
  177. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte.d.ts +0 -50
  178. package/dist/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +0 -20
  179. package/dist/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
  180. package/dist/types.d.ts +0 -5
  181. package/dist/types.js +0 -1
  182. package/src/lib/stories/Home.mdx +0 -61
  183. package/src/lib/stories/assets/dark-theme-toggle.png +0 -0
  184. package/src/lib/stories/components/Form/Button/Button.stories.svelte +0 -82
  185. package/src/lib/stories/components/Form/Button/Color/Color.stories.svelte +0 -68
  186. package/src/lib/stories/components/Form/Button/Events/Events.stories.svelte +0 -42
  187. package/src/lib/stories/components/Form/Button/IconButton/IconButton.stories.svelte +0 -51
  188. package/src/lib/stories/components/Form/Button/Roundness/Roundness.stories.svelte +0 -49
  189. package/src/lib/stories/components/Form/Button/Size/Size.stories.svelte +0 -22
  190. package/src/lib/stories/components/Form/Button/Variant/Variant.stories.svelte +0 -21
  191. package/src/lib/stories/components/Form/FormControl/FormControl.stories.svelte +0 -29
  192. package/src/lib/stories/components/Form/Label/Label.stories.svelte +0 -23
  193. package/src/lib/stories/components/Form/Message/Color/Color.stories.svelte +0 -36
  194. package/src/lib/stories/components/Form/Message/Message.stories.svelte +0 -35
  195. package/src/lib/stories/components/Form/Message/Size/Size.stories.svelte +0 -24
  196. package/src/lib/stories/components/Form/PasswordInput/Events/Events.stories.svelte +0 -174
  197. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +0 -57
  198. package/src/lib/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +0 -20
  199. package/src/lib/stories/components/Form/PasswordInput/Size/Size.stories.svelte +0 -16
  200. package/src/lib/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +0 -31
  201. package/src/lib/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -79
  202. package/src/lib/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
  203. package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -64
  204. package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -159
  205. package/src/lib/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +0 -20
  206. package/src/lib/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
  207. package/src/lib/stories/components/Form/TextInput/Events/Events.stories.svelte +0 -153
  208. package/src/lib/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +0 -21
  209. package/src/lib/stories/components/Form/TextInput/TextInput.stories.svelte +0 -41
  210. package/src/lib/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +0 -47
  211. package/src/lib/stories/components/Layout/Paper/Paper.stories.svelte +0 -41
  212. package/src/lib/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +0 -30
  213. package/src/lib/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +0 -42
  214. package/src/lib/stories/developer tools/Intro.mdx +0 -7
  215. package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +0 -38
  216. package/src/lib/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +0 -20
  217. package/src/lib/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte +0 -16
  218. package/src/lib/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +0 -47
  219. package/src/lib/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +0 -27
  220. package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +0 -33
  221. package/src/lib/stories/philosophy/Colors/Colors.mdx +0 -43
  222. package/src/lib/stories/philosophy/Colors/Colors.stories.svelte +0 -22
  223. package/src/lib/stories/philosophy/Colors/Opacity.stories.svelte +0 -11
  224. package/src/lib/stories/philosophy/Themes.mdx +0 -23
  225. package/src/lib/types.ts +0 -6
  226. /package/dist/stories/components/Form/{SimpleSelect → Select}/Events/Events.stories.svelte.d.ts +0 -0
  227. /package/dist/stories/components/{Form/SimpleSelect → Layout/Menu/MenuItem}/Size/Size.stories.svelte.d.ts +0 -0
  228. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.stories.svelte +0 -0
  229. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.stories.svelte.d.ts +0 -0
  230. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte +0 -0
  231. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte.d.ts +0 -0
  232. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.stories.svelte +0 -0
  233. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.stories.svelte.d.ts +0 -0
  234. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte +0 -0
  235. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte.d.ts +0 -0
  236. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Palette.svelte.d.ts +0 -0
  237. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Swatch.svelte.d.ts +0 -0
  238. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Swatches.svelte.d.ts +0 -0
  239. /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/utils/color.d.ts +0 -0
  240. /package/src/lib/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte +0 -0
  241. /package/src/lib/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte +0 -0
@@ -1,6 +1,26 @@
1
1
  <script lang="ts" module>
2
+ import type { ComponentRoundness } from '$lib/types/roundness.js';
3
+ import type { ComponentSize } from '$lib/types/size.js';
4
+
5
+ import type { Snippet } from 'svelte';
6
+ import type {
7
+ ChangeEventHandler,
8
+ ClipboardEventHandler,
9
+ FocusEventHandler,
10
+ FormEventHandler,
11
+ } from 'svelte/elements';
12
+
2
13
  export type TextInputType = 'text' | 'tel' | 'email' | 'password' | 'url' | 'number';
3
14
 
15
+ export const textInputTypeArray: TextInputType[] = [
16
+ 'text',
17
+ 'tel',
18
+ 'email',
19
+ 'password',
20
+ 'url',
21
+ 'number',
22
+ ];
23
+
4
24
  export type TextInputFocusEvent = FocusEvent & {
5
25
  currentTarget: EventTarget & HTMLInputElement;
6
26
  };
@@ -8,21 +28,12 @@
8
28
  export type TextInputClipboardEvent = ClipboardEvent & {
9
29
  currentTarget: EventTarget & HTMLInputElement;
10
30
  };
11
- </script>
12
-
13
- <script lang="ts">
14
- import InputEnclosure from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
15
31
 
16
- import type { ComponentRoundness, ComponentSize } from '$lib/types.js';
17
- import type { Snippet } from 'svelte';
18
- import type {
19
- ChangeEventHandler,
20
- ClipboardEventHandler,
21
- FocusEventHandler,
22
- FormEventHandler,
23
- } from 'svelte/elements';
32
+ export type TextInputInputEvent = Event & {
33
+ currentTarget: EventTarget & HTMLInputElement;
34
+ };
24
35
 
25
- interface TextInputProps {
36
+ export interface TextInputProps {
26
37
  /** Input type? */
27
38
  type?: TextInputType;
28
39
  /** Input ref */
@@ -30,7 +41,7 @@
30
41
  /** How large should the button be? */
31
42
  size?: ComponentSize;
32
43
  /** How round should the border radius be? */
33
- roundness?: ComponentRoundness | false;
44
+ roundness?: ComponentRoundness;
34
45
  /** Add a border around the button. Default True */
35
46
  outline?: boolean;
36
47
  /** Input value */
@@ -68,11 +79,18 @@
68
79
  /** oncut event handler */
69
80
  oncut?: ClipboardEventHandler<HTMLInputElement>;
70
81
  }
82
+ </script>
83
+
84
+ <script lang="ts">
85
+ import InputEnclosure from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
86
+ import DynamicInput, {
87
+ type DynamicInputFocusEvent,
88
+ } from '$lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte';
71
89
 
72
90
  let {
73
91
  type = 'text',
74
92
  size = 'normal',
75
- roundness = '1x',
93
+ roundness = 1,
76
94
  outline = true,
77
95
  name,
78
96
  id,
@@ -96,19 +114,21 @@
96
114
 
97
115
  let focused: boolean = $state(false);
98
116
 
99
- function onfocusMod(e: TextInputFocusEvent) {
117
+ function onfocusMod(e: DynamicInputFocusEvent) {
118
+ const eTyped = e as TextInputFocusEvent;
100
119
  focused = true;
101
120
 
102
121
  if (onfocus) {
103
- onfocus(e);
122
+ onfocus(eTyped);
104
123
  }
105
124
  }
106
125
 
107
- function onblurMod(e: TextInputFocusEvent) {
126
+ function onblurMod(e: DynamicInputFocusEvent) {
127
+ const eTyped = e as TextInputFocusEvent;
108
128
  focused = false;
109
129
 
110
130
  if (onblur) {
111
- onblur(e);
131
+ onblur(eTyped);
112
132
  }
113
133
  }
114
134
  </script>
@@ -121,11 +141,12 @@
121
141
  class={['dodo-ui-TextInput', `size--${size}`, `roundness--${roundness}`, className].join(' ')}
122
142
  >
123
143
  <InputEnclosure {outline} {disabled} {error} {focused} {size} {roundness} {before} {after}>
124
- <input
144
+ <DynamicInput
125
145
  {type}
126
146
  {name}
127
147
  {id}
128
148
  {disabled}
149
+ bind:ref
129
150
  {oninput}
130
151
  {onchange}
131
152
  onfocus={onfocusMod}
@@ -134,47 +155,9 @@
134
155
  {oncopy}
135
156
  {oncut}
136
157
  {placeholder}
137
- {readonly}
138
158
  bind:value
139
- bind:this={ref}
159
+ {readonly}
160
+ variant="input"
140
161
  />
141
162
  </InputEnclosure>
142
163
  </div>
143
-
144
- <style lang="scss">
145
- .dodo-ui-TextInput {
146
- input {
147
- flex: 1;
148
- border: 0;
149
- outline: 0;
150
- height: 100%;
151
- background-color: transparent;
152
- font-family: inherit;
153
- color: inherit;
154
- letter-spacing: 0.3px;
155
- }
156
-
157
- &.size {
158
- &--normal {
159
- input {
160
- font-size: 1rem;
161
- padding: 0 12px;
162
- }
163
- }
164
-
165
- &--small {
166
- input {
167
- padding: 0 8px;
168
- font-size: 0.9rem;
169
- }
170
- }
171
-
172
- &--large {
173
- input {
174
- font-size: 1.1rem;
175
- padding: 0 14px;
176
- }
177
- }
178
- }
179
- }
180
- </style>
@@ -0,0 +1,65 @@
1
+ <script lang="ts" module>
2
+ import { type Snippet } from 'svelte';
3
+ import type { ComponentSize } from '$lib/types/size.js';
4
+
5
+ export interface MenuProps {
6
+ /** Menu contents goes here */
7
+ children?: Snippet;
8
+ /** Menu ref */
9
+ ref?: HTMLUListElement;
10
+ /** Custom css class */
11
+ class?: string;
12
+ /** Menu Width */
13
+ width?: string;
14
+ /** Menu Height */
15
+ height?: string;
16
+ /** How large should the Menu Items be? */
17
+ size?: ComponentSize;
18
+ /** Menu Separator */
19
+ separator?: boolean;
20
+ /** Id */
21
+ id?: string;
22
+ }
23
+ </script>
24
+
25
+ <script lang="ts">
26
+ import { setContext } from 'svelte';
27
+
28
+ let {
29
+ children,
30
+ id,
31
+ class: className = '',
32
+ width,
33
+ height,
34
+ ref = $bindable<HTMLUListElement>(),
35
+ size,
36
+ separator,
37
+ }: MenuProps = $props();
38
+
39
+ setContext('MenuItemSize', () => size);
40
+ setContext('MenuItemSeparator', () => separator);
41
+ </script>
42
+
43
+ <ul
44
+ class={['dodo-ui-Menu', className].join(' ')}
45
+ {id}
46
+ bind:this={ref}
47
+ style={`${width ? `width:${width};` : ''}
48
+ ${height ? `height:${height};` : ''}
49
+ `}
50
+ >
51
+ {#if children}
52
+ {@render children()}
53
+ {/if}
54
+ </ul>
55
+
56
+ <style lang="scss">
57
+ .dodo-ui-Menu {
58
+ margin: 0;
59
+ padding: 0;
60
+ display: flex;
61
+ flex-direction: column;
62
+ overflow: inherit;
63
+ outline: 0;
64
+ }
65
+ </style>
@@ -0,0 +1,268 @@
1
+ <script lang="ts" module>
2
+ import type {
3
+ ButtonLinkReferrerpolicy,
4
+ ButtonLinkTarget,
5
+ } from '$lib/stories/components/Form/Button/Button.svelte';
6
+ import { type Snippet } from 'svelte';
7
+ import type { MouseEventHandler } from 'svelte/elements';
8
+
9
+ export type MenuItemType = 'text' | 'button' | 'link';
10
+
11
+ export const menuItemTypeArray: MenuItemType[] = ['text', 'button', 'link'];
12
+
13
+ export interface MenuItemProps {
14
+ /** MenuItem contents goes here */
15
+ children?: Snippet;
16
+ /** MenuItem ref */
17
+ ref?: HTMLLIElement;
18
+ /** Custom css class */
19
+ class?: string;
20
+ /** Id */
21
+ id?: string;
22
+ /** Menu Item type */
23
+ type?: MenuItemType;
24
+ /** Menu Item type */
25
+ selected?: boolean;
26
+ /** Separator */
27
+ separator?: boolean;
28
+ /** How large should the Menu Items be? */
29
+ size?: ComponentSize;
30
+ /** The onclick event handler */
31
+ onclick?: MouseEventHandler<HTMLButtonElement>;
32
+ /** disabled state */
33
+ disabled?: boolean;
34
+ /** link href */
35
+ href?: string;
36
+ /** Link button: download */
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ download?: any;
39
+ /** Link button: hreflang */
40
+ hreflang?: string | undefined | null;
41
+ /** Link button: media */
42
+ media?: string | undefined | null;
43
+ /** Link button: ping */
44
+ ping?: string | undefined | null;
45
+ /** Link button: rel */
46
+ rel?: string | undefined | null;
47
+ /** Link button: target */
48
+ target?: ButtonLinkTarget;
49
+ /** Link button: Type */
50
+ anchorMediaType?: string | undefined | null;
51
+ /** Link button: referrerpolicy */
52
+ referrerpolicy?: ButtonLinkReferrerpolicy;
53
+ }
54
+ </script>
55
+
56
+ <script lang="ts">
57
+ import { getContext } from 'svelte';
58
+ import type { ComponentSize } from '$lib/types/size.js';
59
+
60
+ let {
61
+ children,
62
+ id,
63
+ class: className = '',
64
+ type = 'text',
65
+ href,
66
+ download,
67
+ hreflang,
68
+ media,
69
+ ping,
70
+ rel,
71
+ target,
72
+ anchorMediaType,
73
+ referrerpolicy,
74
+ disabled = false,
75
+ selected = false,
76
+ separator: separatorInternal,
77
+ onclick,
78
+ size: sizeInternal,
79
+ ref = $bindable<HTMLLIElement>(),
80
+ }: MenuItemProps = $props();
81
+
82
+ const hover = false;
83
+
84
+ const sizeMenu = // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ (getContext<any>('MenuItemSize') ? getContext<any>('MenuItemSize')() : undefined) as
86
+ | ComponentSize
87
+ | undefined;
88
+ const size = sizeMenu || sizeInternal || 'normal';
89
+
90
+ const separatorMenu = // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
+ (getContext<any>('MenuItemSeparator') ? getContext<any>('MenuItemSeparator')() : undefined) as
92
+ | boolean
93
+ | undefined;
94
+ const separator = separatorMenu !== undefined ? separatorMenu : separatorInternal || false;
95
+ </script>
96
+
97
+ {#snippet menuItemContent()}
98
+ {#if children}
99
+ {@render children()}
100
+ {/if}
101
+ {/snippet}
102
+
103
+ <li
104
+ class:disabled
105
+ class:separator
106
+ class:selected
107
+ class:hover
108
+ class={['dodo-ui-MenuItem', `size--${size}`, className].join(' ')}
109
+ {id}
110
+ bind:this={ref}
111
+ >
112
+ {#if type === 'link'}
113
+ <a
114
+ class:disabled
115
+ class:selected
116
+ class={['MenuItem-type', `MenuItem-type--${type}`, `size--${size}`].join(' ')}
117
+ {href}
118
+ {download}
119
+ {hreflang}
120
+ {media}
121
+ {ping}
122
+ {rel}
123
+ {target}
124
+ type={anchorMediaType}
125
+ {referrerpolicy}
126
+ >
127
+ {@render menuItemContent()}
128
+ </a>
129
+ {:else if type === 'button'}
130
+ <button
131
+ class:disabled
132
+ class:selected
133
+ class={['MenuItem-type', `MenuItem-type--${type}`, `size--${size}`].join(' ')}
134
+ {onclick}
135
+ {disabled}
136
+ >
137
+ {@render menuItemContent()}
138
+ </button>
139
+ {:else}
140
+ <div
141
+ class:disabled
142
+ class:selected
143
+ class={['MenuItem-type', `MenuItem-type--${type}`, `size--${size}`].join(' ')}
144
+ >
145
+ {@render menuItemContent()}
146
+ </div>
147
+ {/if}
148
+ </li>
149
+
150
+ <style lang="scss">
151
+ :global(:root) {
152
+ --dodo-ui-MenuItem-selected-bg: color-mix(
153
+ in oklab,
154
+ var(--dodo-color-neutral-800) 4%,
155
+ transparent
156
+ );
157
+ --dodo-ui-MenuItem-hover-bg: color-mix(in oklab, var(--dodo-color-neutral-800) 8%, transparent);
158
+ --dodo-ui-MenuItem-active-bg: color-mix(
159
+ in oklab,
160
+ var(--dodo-color-neutral-800) 11%,
161
+ transparent
162
+ );
163
+
164
+ --dodo-ui-MenuItem-separator-color: var(--dodo-color-neutral-300);
165
+
166
+ --dodo-ui-MenuItem-disabled-color: var(--dodo-color-neutral-400);
167
+ }
168
+
169
+ :global(.dodo-theme--dark) {
170
+ --dodo-ui-MenuItem-selected-bg: color-mix(
171
+ in oklab,
172
+ var(--dodo-color-neutral-800) 4%,
173
+ transparent
174
+ );
175
+ --dodo-ui-MenuItem-hover-bg: color-mix(in oklab, var(--dodo-color-neutral-800) 8%, transparent);
176
+ --dodo-ui-MenuItem-active-bg: color-mix(
177
+ in oklab,
178
+ var(--dodo-color-neutral-800) 15%,
179
+ transparent
180
+ );
181
+
182
+ --dodo-ui-MenuItem-separator-color: var(--dodo-color-neutral-300);
183
+
184
+ --dodo-ui-MenuItem-disabled-color: var(--dodo-color-neutral-500);
185
+ }
186
+
187
+ .dodo-ui-MenuItem {
188
+ display: flex;
189
+ margin: 0;
190
+ padding: 0;
191
+ user-select: none;
192
+
193
+ &.separator {
194
+ border-bottom: 1px solid var(--dodo-ui-MenuItem-separator-color);
195
+ }
196
+
197
+ .MenuItem-type {
198
+ cursor: pointer;
199
+ transition: all 70ms;
200
+ text-decoration: none;
201
+ margin: 0;
202
+ display: flex;
203
+ flex-wrap: wrap;
204
+ align-items: center;
205
+ border: 0;
206
+ outline: 0;
207
+ background-color: transparent;
208
+ color: inherit;
209
+ font-family: inherit;
210
+ width: 100%;
211
+
212
+ &.selected {
213
+ background-color: var(--dodo-ui-MenuItem-selected-bg);
214
+ }
215
+
216
+ &:hover {
217
+ background-color: var(--dodo-ui-MenuItem-hover-bg);
218
+ }
219
+
220
+ &:active {
221
+ background-color: var(--dodo-ui-MenuItem-active-bg);
222
+ }
223
+
224
+ &.size {
225
+ &--normal {
226
+ min-height: var(--dodo-ui-element-height-normal);
227
+ font-size: 1rem;
228
+ padding: 0 calc(var(--dodo-ui-space-small) * 2);
229
+ }
230
+
231
+ &--small {
232
+ min-height: var(--dodo-ui-element-height-small);
233
+ padding: 0 var(--dodo-ui-space);
234
+ font-size: 0.9rem;
235
+ }
236
+
237
+ &--large {
238
+ min-height: var(--dodo-ui-element-height-large);
239
+ font-size: 1.1rem;
240
+ padding: 0 calc(var(--dodo-ui-space) * 2);
241
+ }
242
+ }
243
+
244
+ &.disabled {
245
+ cursor: initial;
246
+
247
+ background-color: transparent;
248
+ color: var(--dodo-ui-MenuItem-disabled-color);
249
+
250
+ &:hover {
251
+ background-color: transparent;
252
+ color: var(--dodo-ui-MenuItem-disabled-color);
253
+ }
254
+
255
+ &:active {
256
+ background-color: transparent;
257
+ color: var(--dodo-ui-MenuItem-disabled-color);
258
+ }
259
+ }
260
+ }
261
+
262
+ &.hover {
263
+ .MenuItem-type {
264
+ background-color: var(--dodo-ui-MenuItem-hover-bg);
265
+ }
266
+ }
267
+ }
268
+ </style>