lapikit 0.0.0-insiders.e877f7f → 0.0.0-insiders.eb9b51b

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 (218) hide show
  1. package/bin/configuration.js +303 -0
  2. package/bin/helper.js +0 -15
  3. package/bin/index.js +33 -0
  4. package/bin/presets.js +26 -0
  5. package/bin/prompts.js +67 -0
  6. package/dist/actions/accordion.svelte.d.ts +9 -0
  7. package/dist/actions/accordion.svelte.js +24 -0
  8. package/dist/actions/index.d.ts +2 -0
  9. package/dist/actions/index.js +2 -0
  10. package/dist/actions/use-theme.d.ts +1 -0
  11. package/dist/actions/use-theme.js +18 -0
  12. package/dist/assets/icons/arrow-down.svelte +12 -0
  13. package/dist/assets/icons/arrow-down.svelte.d.ts +18 -0
  14. package/dist/assets/icons/arrow-up.svelte +12 -0
  15. package/dist/assets/icons/arrow-up.svelte.d.ts +18 -0
  16. package/dist/assets/icons/close-fill.svelte +12 -0
  17. package/dist/assets/icons/close-fill.svelte.d.ts +18 -0
  18. package/dist/assets/icons/loading-fill.svelte +2 -0
  19. package/dist/assets/icons/loading-fill.svelte.d.ts +6 -14
  20. package/dist/components/accordion/accordion.css +36 -0
  21. package/dist/components/accordion/accordion.svelte +39 -0
  22. package/dist/components/accordion/accordion.svelte.d.ts +4 -0
  23. package/dist/components/accordion/modules/accordion-item.css +68 -0
  24. package/dist/components/accordion/modules/accordion-item.svelte +94 -0
  25. package/dist/components/accordion/modules/accordion-item.svelte.d.ts +4 -0
  26. package/dist/components/accordion/types.d.ts +33 -0
  27. package/dist/components/alert/alert.css +130 -0
  28. package/dist/components/alert/alert.svelte +89 -0
  29. package/dist/components/alert/alert.svelte.d.ts +4 -0
  30. package/dist/components/alert/types.d.ts +28 -0
  31. package/dist/components/alert/types.js +1 -0
  32. package/dist/components/app/app.css +15 -0
  33. package/dist/components/app/app.svelte +34 -4
  34. package/dist/components/app/app.svelte.d.ts +2 -0
  35. package/dist/components/appbar/appbar.css +38 -0
  36. package/dist/components/appbar/appbar.svelte +40 -0
  37. package/dist/components/appbar/appbar.svelte.d.ts +4 -0
  38. package/dist/components/appbar/types.d.ts +15 -0
  39. package/dist/components/appbar/types.js +1 -0
  40. package/dist/components/aspect-ratio/aspect-ratio.css +19 -0
  41. package/dist/components/aspect-ratio/aspect-ratio.svelte +25 -0
  42. package/dist/components/aspect-ratio/aspect-ratio.svelte.d.ts +4 -0
  43. package/dist/components/aspect-ratio/types.d.ts +5 -0
  44. package/dist/components/aspect-ratio/types.js +1 -0
  45. package/dist/components/avatar/avatar.css +102 -0
  46. package/dist/components/avatar/avatar.svelte +46 -0
  47. package/dist/components/avatar/avatar.svelte.d.ts +4 -0
  48. package/dist/components/avatar/types.d.ts +22 -0
  49. package/dist/components/avatar/types.js +1 -0
  50. package/dist/components/button/button.css +167 -203
  51. package/dist/components/button/button.svelte +43 -35
  52. package/dist/components/button/button.svelte.d.ts +2 -2
  53. package/dist/components/button/types.d.ts +8 -6
  54. package/dist/components/card/card.css +105 -0
  55. package/dist/components/card/card.svelte +63 -0
  56. package/dist/components/card/card.svelte.d.ts +4 -0
  57. package/dist/components/card/types.d.ts +18 -0
  58. package/dist/components/card/types.js +1 -0
  59. package/dist/components/chip/chip.css +224 -0
  60. package/dist/components/chip/chip.svelte +131 -0
  61. package/dist/components/chip/chip.svelte.d.ts +4 -0
  62. package/dist/components/chip/types.d.ts +32 -0
  63. package/dist/components/chip/types.js +1 -0
  64. package/dist/components/dialog/dialog.css +129 -0
  65. package/dist/components/dialog/dialog.svelte +67 -0
  66. package/dist/components/dialog/dialog.svelte.d.ts +4 -0
  67. package/dist/components/dialog/types.d.ts +24 -0
  68. package/dist/components/dialog/types.js +1 -0
  69. package/dist/components/dropdown/dropdown.css +3 -12
  70. package/dist/components/dropdown/dropdown.svelte +6 -7
  71. package/dist/components/dropdown/types.d.ts +1 -1
  72. package/dist/components/icon/icon.css +20 -18
  73. package/dist/components/icon/icon.svelte +2 -2
  74. package/dist/components/icon/types.d.ts +1 -1
  75. package/dist/components/index.d.ts +17 -1
  76. package/dist/components/index.js +17 -1
  77. package/dist/components/list/list.css +149 -0
  78. package/dist/components/list/list.svelte +44 -0
  79. package/dist/components/list/list.svelte.d.ts +4 -0
  80. package/dist/components/list/modules/list-item.css +67 -0
  81. package/dist/components/list/modules/list-item.svelte +76 -0
  82. package/dist/components/list/modules/list-item.svelte.d.ts +4 -0
  83. package/dist/components/list/types.d.ts +33 -0
  84. package/dist/components/list/types.js +1 -0
  85. package/dist/components/modal/modal.css +137 -0
  86. package/dist/components/modal/modal.svelte +112 -0
  87. package/dist/components/modal/modal.svelte.d.ts +4 -0
  88. package/dist/components/modal/types.d.ts +26 -0
  89. package/dist/components/modal/types.js +1 -0
  90. package/dist/components/popover/popover.css +3 -12
  91. package/dist/components/popover/popover.svelte +6 -6
  92. package/dist/components/popover/types.d.ts +1 -1
  93. package/dist/components/separator/separator.css +42 -0
  94. package/dist/components/separator/separator.svelte +37 -0
  95. package/dist/components/separator/separator.svelte.d.ts +4 -0
  96. package/dist/components/separator/types.d.ts +11 -0
  97. package/dist/components/separator/types.js +1 -0
  98. package/dist/components/spacer/spacer.css +3 -0
  99. package/dist/components/spacer/spacer.svelte +7 -0
  100. package/dist/components/spacer/spacer.svelte.d.ts +4 -0
  101. package/dist/components/spacer/types.d.ts +4 -0
  102. package/dist/components/spacer/types.js +1 -0
  103. package/dist/components/textfield/textfield.css +298 -0
  104. package/dist/components/textfield/textfield.svelte +193 -0
  105. package/dist/components/textfield/textfield.svelte.d.ts +4 -0
  106. package/dist/components/textfield/types.d.ts +37 -0
  107. package/dist/components/textfield/types.js +1 -0
  108. package/dist/components/toolbar/toolbar.css +117 -0
  109. package/dist/components/toolbar/toolbar.svelte +47 -0
  110. package/dist/components/toolbar/toolbar.svelte.d.ts +4 -0
  111. package/dist/components/toolbar/types.d.ts +27 -0
  112. package/dist/components/toolbar/types.js +1 -0
  113. package/dist/components/tooltip/tooltip.css +5 -13
  114. package/dist/components/tooltip/tooltip.svelte +5 -5
  115. package/dist/components/tooltip/types.d.ts +1 -1
  116. package/dist/index.d.ts +3 -1
  117. package/dist/index.js +23 -3
  118. package/dist/internal/config/presets.d.ts +149 -0
  119. package/dist/internal/config/presets.js +169 -0
  120. package/dist/internal/config/variables.d.ts +3 -0
  121. package/dist/internal/config/variables.js +3 -0
  122. package/dist/internal/{assets.svelte.d.ts → core/actions/assets.svelte.d.ts} +1 -0
  123. package/dist/internal/{assets.svelte.js → core/actions/assets.svelte.js} +17 -4
  124. package/dist/internal/core/actions/dropdown.svelte.d.ts +7 -0
  125. package/dist/internal/core/actions/popover.svelte.d.ts +7 -0
  126. package/dist/internal/core/actions/tooltip.svelte.d.ts +7 -0
  127. package/dist/internal/core/animations/ripple.d.ts +12 -0
  128. package/dist/internal/core/animations/ripple.js +93 -0
  129. package/dist/internal/core/css.d.ts +1 -0
  130. package/dist/internal/core/css.js +16 -0
  131. package/dist/internal/core/formatter/component.d.ts +5 -0
  132. package/dist/internal/core/formatter/component.js +60 -0
  133. package/dist/internal/core/formatter/device.d.ts +5 -0
  134. package/dist/internal/core/formatter/device.js +66 -0
  135. package/dist/internal/core/formatter/index.d.ts +7 -0
  136. package/dist/internal/core/formatter/index.js +35 -0
  137. package/dist/internal/core/formatter/style.d.ts +4 -0
  138. package/dist/internal/core/formatter/style.js +15 -0
  139. package/dist/internal/core/formatter/theme.d.ts +5 -0
  140. package/dist/internal/core/formatter/theme.js +44 -0
  141. package/dist/internal/core/formatter/typography.d.ts +5 -0
  142. package/dist/internal/core/formatter/typography.js +12 -0
  143. package/dist/internal/core/standard-colors.d.ts +75 -0
  144. package/dist/internal/core/standard-colors.js +75 -0
  145. package/dist/internal/helpers/colors.d.ts +1 -0
  146. package/dist/internal/{colors.js → helpers/colors.js} +2 -2
  147. package/dist/internal/helpers/convert.d.ts +1 -0
  148. package/dist/internal/helpers/convert.js +17 -0
  149. package/dist/internal/helpers/deep-merge.d.ts +44 -0
  150. package/dist/internal/helpers/deep-merge.js +80 -0
  151. package/dist/internal/helpers/parser.d.ts +10 -0
  152. package/dist/internal/helpers/parser.js +93 -0
  153. package/dist/internal/helpers/scroll.d.ts +1 -0
  154. package/dist/internal/helpers/scroll.js +6 -0
  155. package/dist/internal/plugins/vite.d.ts +8 -0
  156. package/dist/internal/plugins/vite.js +33 -0
  157. package/dist/internal/types/components.d.ts +14 -0
  158. package/dist/internal/types/components.js +1 -0
  159. package/dist/internal/types/configuration.d.ts +63 -0
  160. package/dist/internal/types/configuration.js +1 -0
  161. package/dist/internal/types/index.d.ts +2 -0
  162. package/dist/internal/types/index.js +2 -0
  163. package/dist/stores/breakpoints.d.ts +6 -0
  164. package/dist/stores/breakpoints.js +14 -0
  165. package/dist/stores/components.d.ts +8 -0
  166. package/dist/stores/components.js +26 -0
  167. package/dist/stores/devices.d.ts +6 -0
  168. package/dist/stores/devices.js +9 -0
  169. package/dist/stores/index.d.ts +4 -4
  170. package/dist/stores/index.js +4 -23
  171. package/dist/stores/themes.d.ts +2 -0
  172. package/dist/stores/themes.js +4 -0
  173. package/dist/styles/animation.css +33 -0
  174. package/dist/{style/animation.css → styles/keyframes.css} +10 -0
  175. package/dist/{style/normalize.css → styles/reset.css} +15 -5
  176. package/dist/themes.css +0 -0
  177. package/package.json +18 -6
  178. package/bin/lapikit.js +0 -54
  179. package/bin/modules/adapter.js +0 -52
  180. package/bin/modules/preset.js +0 -11
  181. package/dist/internal/colors.d.ts +0 -1
  182. package/dist/internal/index.d.ts +0 -3
  183. package/dist/internal/index.js +0 -3
  184. package/dist/internal/types.d.ts +0 -57
  185. package/dist/plugin/modules/config.d.ts +0 -2
  186. package/dist/plugin/modules/config.js +0 -54
  187. package/dist/plugin/modules/importer.d.ts +0 -1
  188. package/dist/plugin/modules/importer.js +0 -15
  189. package/dist/plugin/vitejs.d.ts +0 -6
  190. package/dist/plugin/vitejs.js +0 -26
  191. package/dist/preset.d.ts +0 -2
  192. package/dist/preset.js +0 -92
  193. package/dist/style/css.d.ts +0 -2
  194. package/dist/style/css.js +0 -31
  195. package/dist/style/parser/color.d.ts +0 -5
  196. package/dist/style/parser/color.js +0 -88
  197. package/dist/style/parser/component.d.ts +0 -2
  198. package/dist/style/parser/component.js +0 -115
  199. package/dist/style/parser/device.d.ts +0 -2
  200. package/dist/style/parser/device.js +0 -28
  201. package/dist/style/parser/index.d.ts +0 -4
  202. package/dist/style/parser/index.js +0 -4
  203. package/dist/style/parser/variable.d.ts +0 -2
  204. package/dist/style/parser/variable.js +0 -25
  205. /package/dist/{internal → components/accordion}/types.js +0 -0
  206. /package/dist/{components/dropdown → internal/core/actions}/dropdown.svelte.js +0 -0
  207. /package/dist/{components/popover → internal/core/actions}/popover.svelte.js +0 -0
  208. /package/dist/{components/tooltip → internal/core/actions}/tooltip.svelte.js +0 -0
  209. /package/dist/internal/{ansi.d.ts → core/bin/ansi.d.ts} +0 -0
  210. /package/dist/internal/{ansi.js → core/bin/ansi.js} +0 -0
  211. /package/dist/internal/{terminal.d.ts → core/bin/terminal.d.ts} +0 -0
  212. /package/dist/internal/{terminal.js → core/bin/terminal.js} +0 -0
  213. /package/dist/internal/{minify.d.ts → core/minify.d.ts} +0 -0
  214. /package/dist/internal/{minify.js → core/minify.js} +0 -0
  215. /package/dist/{utils/x11.d.ts → internal/core/x11-colors.d.ts} +0 -0
  216. /package/dist/{utils/x11.js → internal/core/x11-colors.js} +0 -0
  217. /package/dist/internal/{clickOutside.d.ts → helpers/outside.d.ts} +0 -0
  218. /package/dist/internal/{clickOutside.js → helpers/outside.js} +0 -0
@@ -0,0 +1,298 @@
1
+ .kit-textfield {
2
+ flex: 1 1 auto;
3
+ font-size: 1rem;
4
+ display: grid;
5
+ grid-template-areas:
6
+ 'prepend control append'
7
+ 'a messages b';
8
+ grid-template-columns: max-content minmax(0, 1fr) max-content;
9
+ grid-template-rows: 1fr auto;
10
+ }
11
+
12
+ /* variant */
13
+ .kit-textfield[breakpoint]kit-textfield--variant-filled .kit-field {
14
+ --textfield-border-color: var(--textfield-background, var(--kit-background-grouped-primary));
15
+ background-color: var(--textfield-background, var(--kit-background-grouped-primary));
16
+ border-radius: var(--textfield-shape, var(--system-shape-md));
17
+ color: var(--textfield-color, var(--kit-label-primary));
18
+ }
19
+
20
+ .kit-textfield[breakpoint]kit-textfield--variant-outline .kit-field {
21
+ --textfield-border-color: var(--textfield-color);
22
+ background-color: var(--textfield-background);
23
+ border-radius: var(--textfield-shape);
24
+ color: var(--textfield-color);
25
+ }
26
+
27
+ .kit-textfield[breakpoint]kit-textfield--variant-filled .kit-textfield-outline,
28
+ .kit-textfield[breakpoint]kit-textfield--variant-outline .kit-textfield-outline {
29
+ border-bottom: 1px solid var(--textfield-border-color);
30
+ border-top: 1px solid var(--textfield-border-color);
31
+ border-right: 1px solid var(--textfield-border-color);
32
+ border-left: 1px solid var(--textfield-border-color);
33
+ border-radius: var(--textfield-shape);
34
+ }
35
+
36
+ .kit-textfield[breakpoint]kit-textfield--variant-text .kit-field {
37
+ --textfield-border-color: var(--textfield-color);
38
+ background-color: transparent;
39
+ border-radius: 0;
40
+ color: var(--textfield-color);
41
+ }
42
+
43
+ .kit-textfield[breakpoint]kit-textfield--variant-text .kit-textfield-outline {
44
+ border-bottom: 1px solid var(--textfield-border-color);
45
+ border-top: 0;
46
+ border-right: 0;
47
+ border-left: 0;
48
+ border-radius: 0;
49
+ }
50
+
51
+ .kit-textfield--hide-spin-buttons input[type='number'] {
52
+ -moz-appearance: textfield;
53
+ appearance: textfield;
54
+ }
55
+ .kit-textfield--hide-spin-buttons input[type='number']::-webkit-inner-spin-button,
56
+ .kit-textfield--hide-spin-buttons input[type='number']::-webkit-outer-spin-button {
57
+ display: none;
58
+ -webkit-appearance: none;
59
+ }
60
+
61
+ .kit-textfield--disabled {
62
+ opacity: 0.5;
63
+ pointer-events: none;
64
+ }
65
+
66
+ .kit-textfield--readonly {
67
+ pointer-events: none;
68
+ }
69
+
70
+ .kit-textfield--error .kit-textfield-outline {
71
+ border: 1px solid var(--kit-accent-destructive);
72
+ }
73
+
74
+ .kit-textfield-outline {
75
+ align-items: stretch;
76
+ contain: layout;
77
+ display: flex;
78
+ height: 100%;
79
+ left: 0;
80
+ pointer-events: none;
81
+ position: absolute;
82
+ right: 0;
83
+ width: 100%;
84
+ }
85
+
86
+ .kit-textfield .kit-textfield-prepend {
87
+ display: flex;
88
+ grid-area: prepend;
89
+ margin-inline-end: 16px;
90
+ align-items: center;
91
+ padding-top: 0;
92
+ }
93
+
94
+ .kit-textfield .kit-textfield-append {
95
+ display: flex;
96
+ grid-area: append;
97
+ margin-inline-start: 16px;
98
+ align-items: center;
99
+ padding-top: 0;
100
+ }
101
+
102
+ /* control */
103
+ .kit-textfield-control {
104
+ display: flex;
105
+ grid-area: control;
106
+ }
107
+
108
+ .kit-textfield-control .kit-textfield-prepend-inner {
109
+ grid-area: prepend-inner;
110
+ display: flex;
111
+ align-items: center;
112
+ padding-top: 0;
113
+ }
114
+ .kit-textfield-control .kit-textfield-clearable {
115
+ cursor: pointer;
116
+ display: flex;
117
+ align-items: center;
118
+ padding-top: 0;
119
+ overflow: hidden;
120
+ margin-inline: 4px;
121
+ grid-area: clear;
122
+ opacity: 0;
123
+ }
124
+
125
+ .kit-textfield-clearable.kit-textfield-clearable--visible {
126
+ opacity: 1;
127
+ }
128
+
129
+ .kit-textfield-control .kit-textfield-append-inner {
130
+ grid-area: append-inner;
131
+ display: flex;
132
+ align-items: center;
133
+ padding-top: 0;
134
+ }
135
+
136
+ /* field prefix suffix */
137
+ .kit-field .kit-field--field .kit-field--field-prefix,
138
+ .kit-field .kit-field--field .kit-field--field-suffix {
139
+ align-items: center;
140
+ cursor: default;
141
+ display: flex;
142
+ transition: inherit;
143
+ white-space: nowrap;
144
+ }
145
+
146
+ /* field */
147
+ .kit-textfield-control .kit-field {
148
+ display: grid;
149
+ grid-template-areas: 'prepend-inner field clear append-inner';
150
+ grid-template-columns: max-content minmax(0, 1fr) max-content max-content;
151
+ font-size: calc(var(--system-spacing) * var(--textfield-multiplier-font-size));
152
+ max-width: 100%;
153
+ contain: layout;
154
+ flex: 1 0;
155
+ grid-area: control;
156
+ position: relative;
157
+ padding: calc(var(--system-spacing) * var(--textfield-multiplier-x))
158
+ calc(var(--system-spacing) * var(--textfield-multiplier-y));
159
+ gap: calc(var(--system-spacing) * var(--textfield-multiplier-gap));
160
+ }
161
+
162
+ .kit-textfield-control .kit-field .kit-field--field {
163
+ flex: 1 0;
164
+ grid-area: field;
165
+ position: relative;
166
+ align-items: flex-start;
167
+ display: flex;
168
+ }
169
+
170
+ .kit-field .kit-field--field input {
171
+ font: inherit;
172
+ border-radius: 0;
173
+ color: inherit;
174
+ flex: 1;
175
+ min-width: 0;
176
+ align-items: center;
177
+ color: inherit;
178
+ column-gap: 2px;
179
+ display: flex;
180
+ flex-wrap: wrap;
181
+ position: relative;
182
+ width: 100%;
183
+ row-gap: 8px;
184
+ }
185
+
186
+ .kit-field .kit-field--field input:focus,
187
+ .kit-field .kit-field--field input:focus-visible,
188
+ .kit-field .kit-field--field input:active {
189
+ outline: none;
190
+ box-shadow: none;
191
+ }
192
+
193
+ /* message */
194
+ .kit-textfield-message {
195
+ padding-inline: var(--textfield-spacing-y);
196
+ align-items: flex-end;
197
+ display: flex;
198
+ font-size: 0.75rem;
199
+ grid-area: messages;
200
+ min-height: 22px;
201
+ padding-top: var(--textfield-spacing-x);
202
+ overflow: hidden;
203
+ justify-content: space-between;
204
+ opacity: 0;
205
+ }
206
+
207
+ .kit-textfield-message.kit-textfield-message--visible {
208
+ opacity: 1;
209
+ }
210
+
211
+ .kit-message {
212
+ flex: 1 1 auto;
213
+ font-size: 12px;
214
+ min-height: 14px;
215
+ min-width: 1px;
216
+ position: relative;
217
+ display: grid;
218
+ gap: calc(var(--system-spacing) * var(--textfield-multiplier-gap));
219
+ grid-template-areas: 'message-prepend message message-append ';
220
+ grid-template-columns: max-content minmax(0, 1fr) max-content;
221
+ }
222
+
223
+ .kit-message.kit-message--message-error {
224
+ color: var(--kit-accent-destructive);
225
+ }
226
+
227
+ .kit-message .kit-message--message {
228
+ line-height: 12px;
229
+ word-break: break-word;
230
+ overflow-wrap: break-word;
231
+ word-wrap: break-word;
232
+ hyphens: auto;
233
+ grid-area: message;
234
+ }
235
+
236
+ .kit-message .kit-message--prepend,
237
+ .kit-message .kit-message--append {
238
+ line-height: 12px;
239
+ }
240
+
241
+ .kit-message .kit-message--prepend {
242
+ grid-area: message-prepend;
243
+ }
244
+ .kit-message .kit-message--append {
245
+ grid-area: message-append;
246
+ }
247
+
248
+ /* size */
249
+ .kit-textfield[breakpoint]kit-textfield--size-xs {
250
+ --textfield-multiplier-x: 2;
251
+ --textfield-multiplier-y: 2;
252
+ --textfield-multiplier-gap: 1;
253
+ --textfield-multiplier-font-size: 6;
254
+ }
255
+
256
+ .kit-textfield[breakpoint]kit-textfield--size-sm {
257
+ --textfield-multiplier-x: 3;
258
+ --textfield-multiplier-y: 4;
259
+ --textfield-multiplier-gap: 2;
260
+ --textfield-multiplier-font-size: 7;
261
+ }
262
+
263
+ .kit-textfield[breakpoint]kit-textfield--size-md {
264
+ --textfield-multiplier-x: 4;
265
+ --textfield-multiplier-y: 6;
266
+ --textfield-multiplier-gap: 2;
267
+ --textfield-multiplier-font-size: 8;
268
+ }
269
+
270
+ .kit-textfield[breakpoint]kit-textfield--size-lg {
271
+ --textfield-multiplier-x: 5;
272
+ --textfield-multiplier-y: 6;
273
+ --textfield-multiplier-gap: 2;
274
+ --textfield-multiplier-font-size: 9;
275
+ }
276
+
277
+ .kit-textfield[breakpoint]kit-textfield--size-xl {
278
+ --textfield-multiplier-x: 6;
279
+ --textfield-multiplier-y: 8;
280
+ --textfield-multiplier-gap: 3;
281
+ --textfield-multiplier-font-size: 10;
282
+ }
283
+
284
+ /*density */
285
+ .kit-textfield[breakpoint]kit-textfield--density-default {
286
+ --textfield-spacing-x: 0;
287
+ --textfield-spacing-y: calc(var(--system-spacing) * var(--textfield-multiplier-y));
288
+ }
289
+
290
+ .kit-textfield[breakpoint]kit-textfield--density-compact {
291
+ --textfield-spacing-x: calc(0 - 0.5rem);
292
+ --textfield-spacing-y: calc(var(--system-spacing) * var(--textfield-multiplier-y) - 0.5rem);
293
+ }
294
+
295
+ .kit-textfield[breakpoint]kit-textfield--density-comfortable {
296
+ --textfield-spacing-x: calc(0 + 0.5rem);
297
+ --textfield-spacing-y: calc(var(--system-spacing) * var(--textfield-multiplier-y) + 0.5rem);
298
+ }
@@ -0,0 +1,193 @@
1
+ <script lang="ts">
2
+ import { getAssets } from '../../internal/core/actions/assets.svelte.js';
3
+ import type { TextfieldProps } from './types.js';
4
+
5
+ //external
6
+ import { Icon } from '../index.js';
7
+
8
+ let {
9
+ ref = $bindable(),
10
+ prepend,
11
+ append,
12
+ prependInner,
13
+ appendInner,
14
+ value = $bindable(),
15
+ type = 'text',
16
+ density = 'default',
17
+ size = 'md',
18
+ variant = 'filled',
19
+ placeholder,
20
+ light,
21
+ dark,
22
+ counter,
23
+ min,
24
+ max,
25
+ prefix,
26
+ suffix,
27
+ message,
28
+ messagePrefix,
29
+ messageSuffix,
30
+ clearable,
31
+ persistentClear,
32
+ disabled,
33
+ error,
34
+ errorMessage,
35
+ persistentMessage,
36
+ hideSpinButtons, // only type="number"
37
+ readonly,
38
+ color,
39
+ background,
40
+ rounded,
41
+ ...rest
42
+ }: TextfieldProps = $props();
43
+
44
+ const assets = getAssets();
45
+
46
+ let counterValue: number = $state(0);
47
+ let displayMessage: boolean = $state(false);
48
+ let displayClear: boolean = $state(false);
49
+
50
+ const inputClear = () => {
51
+ value = undefined;
52
+ };
53
+
54
+ const handleFocus = () => {
55
+ if (!error && !persistentMessage) displayMessage = true;
56
+ };
57
+
58
+ const handleBlur = () => {
59
+ if (!error && !persistentMessage) displayMessage = false;
60
+ };
61
+
62
+ $effect(() => {
63
+ if (persistentClear) displayClear = true;
64
+ if (persistentMessage) displayMessage = true;
65
+ else if (error) displayMessage = true;
66
+ else if (!error) displayMessage = false;
67
+ });
68
+
69
+ $effect(() => {
70
+ const valueStr = value?.toString() || '';
71
+
72
+ if (valueStr && typeof max === 'number' && max > 0 && valueStr.length > max) {
73
+ const truncated = valueStr.slice(0, max);
74
+ if (typeof value === 'number') {
75
+ const numValue = Number(truncated);
76
+ value = isNaN(numValue) ? undefined : numValue;
77
+ } else {
78
+ value = truncated;
79
+ }
80
+ }
81
+
82
+ counterValue = valueStr.length;
83
+ });
84
+
85
+ $effect(() => {
86
+ if (!persistentClear) {
87
+ if (value) displayClear = true;
88
+ else displayClear = false;
89
+ }
90
+ });
91
+ </script>
92
+
93
+ <div
94
+ bind:this={ref}
95
+ {...rest}
96
+ class={[
97
+ 'kit-textfield',
98
+ light && 'light',
99
+ dark && 'dark',
100
+ size && assets.className('textfield', 'size', size),
101
+ variant && assets.className('textfield', 'variant', variant),
102
+ density && assets.className('textfield', 'density', density),
103
+ disabled && 'kit-textfield--disabled',
104
+ readonly && 'kit-textfield--readonly',
105
+ error && 'kit-textfield--error',
106
+ type === 'number' && hideSpinButtons && 'kit-textfield--hide-spin-buttons',
107
+ rest.class
108
+ ]}
109
+ style:--textfield-background={assets.color(background)}
110
+ style:--textfield-color={assets.color(color)}
111
+ style:--textfield-shape={assets.shape(rounded)}
112
+ >
113
+ {#if prepend}
114
+ <div class="kit-textfield-prepend">
115
+ {@render prepend?.()}
116
+ </div>
117
+ {/if}
118
+ <div class="kit-textfield-control">
119
+ <div class="kit-field">
120
+ {#if prependInner}
121
+ <div class="kit-textfield-prepend-inner">
122
+ {@render prependInner?.()}
123
+ </div>
124
+ {/if}
125
+ <div class="kit-field--field">
126
+ {#if prefix}
127
+ <span class="kit-field--field-prefix">
128
+ <span class="kit-textfield--field-prefix--text">{prefix}</span>
129
+ </span>
130
+ {/if}
131
+ <input
132
+ {type}
133
+ size="1"
134
+ {placeholder}
135
+ bind:value
136
+ onfocus={handleFocus}
137
+ onblur={handleBlur}
138
+ {...max && { maxlength: max }}
139
+ {...min && { minlength: min }}
140
+ {...disabled && { disabled: true }}
141
+ {...readonly && { readonly: true }}
142
+ />
143
+ {#if suffix}
144
+ <span class="kit-field--field-suffix">
145
+ <span class="kit-textfield--field-suffix--text">{suffix}</span>
146
+ </span>
147
+ {/if}
148
+ </div>
149
+ {#if clearable}
150
+ <div
151
+ class={['kit-textfield-clearable', displayClear && 'kit-textfield-clearable--visible']}
152
+ >
153
+ <Icon icon="mgc_close_circle_fill" onclick={() => inputClear()} />
154
+ </div>
155
+ {/if}
156
+
157
+ {#if appendInner}
158
+ <div class="kit-textfield-append-inner">
159
+ {@render appendInner?.()}
160
+ </div>
161
+ {/if}
162
+
163
+ <div class="kit-textfield-outline"></div>
164
+ </div>
165
+ </div>
166
+ {#if append}
167
+ <div class="kit-textfield-append">
168
+ {@render append?.()}
169
+ </div>
170
+ {/if}
171
+
172
+ <div class={['kit-textfield-message', displayMessage && 'kit-textfield-message--visible']}>
173
+ <div class={['kit-message', error && 'kit-message--message-error']}>
174
+ {#if messagePrefix}
175
+ <div class="kit-message--prepend">{messagePrefix}</div>
176
+ {/if}
177
+ {#if message || error}
178
+ <div class="kit-message--message">
179
+ {error ? errorMessage || message : message}
180
+ </div>
181
+ {/if}
182
+ {#if counter || messageSuffix}
183
+ <div class="kit-message--append">
184
+ {#if counter}
185
+ {counterValue}{max ? `/${max}` : ''}
186
+ {:else if messageSuffix}
187
+ {messageSuffix}
188
+ {/if}
189
+ </div>
190
+ {/if}
191
+ </div>
192
+ </div>
193
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { TextfieldProps } from './types.js';
2
+ declare const Textfield: import("svelte").Component<TextfieldProps, {}, "value" | "ref">;
3
+ type Textfield = ReturnType<typeof Textfield>;
4
+ export default Textfield;
@@ -0,0 +1,37 @@
1
+ import type { Component } from '../../internal/types/index.js';
2
+ import type { Snippet } from 'svelte';
3
+ export interface TextfieldProps extends Component {
4
+ ref?: HTMLElement | null;
5
+ dark?: boolean;
6
+ light?: boolean;
7
+ value?: string | number;
8
+ type?: 'text' | 'email' | 'password' | 'number';
9
+ placeholder?: string;
10
+ counter?: boolean;
11
+ min?: number;
12
+ max?: number;
13
+ variant?: 'outline' | 'text' | 'filled';
14
+ density?: 'compact' | 'comfortable' | 'default';
15
+ error?: boolean;
16
+ errorMessage?: string;
17
+ disabled?: boolean;
18
+ color?: string;
19
+ background?: string;
20
+ size?: string | {
21
+ [key: string]: string;
22
+ };
23
+ readonly?: boolean;
24
+ hideSpinButtons?: boolean;
25
+ persistentMessage?: boolean;
26
+ persistentClear?: boolean;
27
+ clearable?: boolean;
28
+ message?: string;
29
+ messagePrefix?: string;
30
+ messageSuffix?: string;
31
+ append?: Snippet;
32
+ prepend?: Snippet;
33
+ prependInner?: Snippet;
34
+ appendInner?: Snippet;
35
+ prefix?: string;
36
+ suffix?: string;
37
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,117 @@
1
+ .kit-toolbar {
2
+ display: flex;
3
+ align-items: center;
4
+ border-style: solid;
5
+ border-width: 1px;
6
+ border-style: solid;
7
+ border-radius: var(--toolbar-shape, var(--system-shape-md));
8
+ color: var(--toolbar-color, var(--kit-label-primary));
9
+ background-color: var(--toolbar-background, var(--kit-background-grouped-tertiary));
10
+ border-color: var(--toolbar-background, var(--kit-background-grouped-tertiary));
11
+ }
12
+
13
+ /* density */
14
+ .kit-toolbar[breakpoint]kit-toolbar--density-default {
15
+ border-radius: calc(var(--system-spacing) * 2.25);
16
+ }
17
+ .kit-toolbar[breakpoint]kit-toolbar--density-default:not([class*='toolbar--orientation-vertical']) {
18
+ height: 3rem;
19
+ padding-inline: calc(var(--system-spacing) * 1.5);
20
+ }
21
+
22
+ .kit-toolbar[breakpoint]kit-toolbar--density-default[class*='toolbar--orientation-vertical'] {
23
+ width: 3rem;
24
+ padding: calc(var(--system-spacing) * 1.5) 0;
25
+ }
26
+
27
+ .kit-toolbar[breakpoint]kit-toolbar--density-compact {
28
+ border-radius: calc(var(--system-spacing) * 1.75);
29
+ }
30
+
31
+ .kit-toolbar[breakpoint]kit-toolbar--density-compact:not([class*='toolbar--orientation-vertical']) {
32
+ height: 2.625rem;
33
+ padding-inline: calc(var(--system-spacing) * 0.75);
34
+ }
35
+
36
+ .kit-toolbar[breakpoint]kit-toolbar--density-compact[class*='toolbar--orientation-vertical'] {
37
+ width: 2.625rem;
38
+ padding: calc(var(--system-spacing) * 0.75) 0;
39
+ }
40
+
41
+ .kit-toolbar[breakpoint]kit-toolbar--density-comfortable {
42
+ border-radius: calc(var(--system-spacing) * 3.5);
43
+ }
44
+
45
+ .kit-toolbar[breakpoint]kit-toolbar--density-comfortable:not(
46
+ [class*='toolbar--orientation-vertical']
47
+ ) {
48
+ height: 3.5rem;
49
+ padding-inline: calc(var(--system-spacing) * 2.25);
50
+ }
51
+
52
+ .kit-toolbar[breakpoint]kit-toolbar--density-comfortable[class*='toolbar--orientation-vertical'] {
53
+ width: 3.5rem;
54
+ padding: calc(var(--system-spacing) * 2.25) 0;
55
+ }
56
+
57
+ .kit-toolbar[breakpoint]kit-toolbar--variant-text,
58
+ .kit-toolbar[breakpoint]kit-toolbar--variant-outline,
59
+ .kit-toolbar[breakpoint]kit-toolbar--variant-dash {
60
+ --toolbar-color: var(--base, var(--kit-background-grouped-primary));
61
+ background-color: transparent;
62
+ }
63
+
64
+ .kit-toolbar[breakpoint]kit-toolbar--variant-outline {
65
+ border-color: currentColor;
66
+ }
67
+
68
+ .kit-toolbar[breakpoint]kit-toolbar--variant-dash {
69
+ border-style: dashed;
70
+ border-color: currentColor;
71
+ }
72
+
73
+ .kit-toolbar[breakpoint]kit-toolbar--orientation-horizontal {
74
+ flex-direction: row;
75
+ width: 100%;
76
+ }
77
+
78
+ .kit-toolbar[breakpoint]kit-toolbar--orientation-vertical {
79
+ flex-direction: column;
80
+ min-height: fit-content;
81
+ width: fit-content;
82
+ }
83
+
84
+ /* wrapper */
85
+ .kit-toolbar .kit-toolbar--wrapper {
86
+ display: flex;
87
+ align-items: center;
88
+ /* margin-left: auto;
89
+ margin-right: auto; */
90
+ flex-direction: row;
91
+ height: auto;
92
+ width: 100%;
93
+ }
94
+
95
+ .kit-toolbar[breakpoint]kit-toolbar--orientation-vertical .kit-toolbar--wrapper {
96
+ flex-direction: column;
97
+ height: 100%;
98
+ }
99
+
100
+ /* location */
101
+ .kit-toolbar[breakpoint]kit-toolbar--location-top {
102
+ top: 0px;
103
+ z-index: 1004;
104
+ transform: translateY(0px);
105
+ position: fixed;
106
+ left: 0px;
107
+ width: calc(100% + 0px);
108
+ }
109
+
110
+ .kit-toolbar[breakpoint]kit-toolbar--location-bottom {
111
+ z-index: 1004;
112
+ transform: translateY(0px);
113
+ position: fixed;
114
+ left: 0px;
115
+ width: calc(100% + 0px);
116
+ bottom: 0px;
117
+ }
@@ -0,0 +1,47 @@
1
+ <script lang="ts">
2
+ import { getAssets } from '../../internal/core/actions/assets.svelte.js';
3
+ import type { ToolbarProps } from './types.js';
4
+
5
+ let {
6
+ children,
7
+ ref = $bindable(),
8
+ is = 'div',
9
+ classContent,
10
+ light,
11
+ dark,
12
+ variant,
13
+ rounded,
14
+ background,
15
+ color,
16
+ density = 'default',
17
+ orientation = 'horizontal',
18
+ location,
19
+ ...rest
20
+ }: ToolbarProps = $props();
21
+
22
+ const assets = getAssets();
23
+ </script>
24
+
25
+ <svelte:element
26
+ this={is}
27
+ bind:this={ref}
28
+ {...rest}
29
+ role="toolbar"
30
+ class={[
31
+ 'kit-toolbar',
32
+ light && 'light',
33
+ dark && 'dark',
34
+ variant && assets.className('toolbar', 'variant', variant),
35
+ density && assets.className('toolbar', 'density', density),
36
+ orientation && assets.className('toolbar', 'orientation', orientation),
37
+ location && assets.className('toolbar', 'location', location),
38
+ rest.class
39
+ ]}
40
+ style:--toolbar-background={assets.color(background)}
41
+ style:--toolbar-color={assets.color(color)}
42
+ style:--toolbar-shape={assets.shape(rounded)}
43
+ >
44
+ <div class={['kit-toolbar--wrapper', classContent]}>
45
+ {@render children?.()}
46
+ </div>
47
+ </svelte:element>
@@ -0,0 +1,4 @@
1
+ import type { ToolbarProps } from './types.js';
2
+ declare const Toolbar: import("svelte").Component<ToolbarProps, {}, "ref">;
3
+ type Toolbar = ReturnType<typeof Toolbar>;
4
+ export default Toolbar;