firstly 0.0.12 → 0.0.13

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 (83) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/esm/api/index.d.ts +1 -0
  3. package/esm/api/index.js +3 -1
  4. package/esm/auth/server/AuthController.server.d.ts +1 -1
  5. package/esm/auth/server/AuthController.server.js +19 -19
  6. package/esm/auth/server/handleGuard.d.ts +16 -0
  7. package/esm/auth/server/handleGuard.js +67 -0
  8. package/esm/auth/server/index.d.ts +3 -1
  9. package/esm/auth/server/index.js +3 -1
  10. package/esm/auth/server/module.d.ts +102 -83
  11. package/esm/auth/server/module.js +55 -42
  12. package/esm/auth/server/providers/github.d.ts +2 -1
  13. package/esm/auth/server/providers/github.js +1 -1
  14. package/esm/auth/static/assets/Page-BUfjaN-D.d.ts +5 -0
  15. package/esm/auth/static/assets/Page-BUfjaN-D.js +19 -0
  16. package/esm/auth/static/assets/Page-CJ58H1vl.css +1 -0
  17. package/esm/auth/static/assets/Page-CaDAqmBS.d.ts +5 -0
  18. package/esm/auth/static/assets/Page-CaDAqmBS.js +1 -0
  19. package/esm/auth/static/assets/Page-DhdZddzJ.d.ts +5 -0
  20. package/esm/auth/static/assets/Page-DhdZddzJ.js +1 -0
  21. package/esm/auth/static/assets/index-BDy4A_14.css +4 -0
  22. package/esm/auth/static/assets/index-D-Ztdt2o.d.ts +54 -0
  23. package/esm/auth/static/assets/index-D-Ztdt2o.js +2 -0
  24. package/esm/auth/static/index.html +11 -11
  25. package/esm/bin/cmd.js +119 -48
  26. package/esm/cellsBuildor.js +1 -1
  27. package/esm/common.d.ts +5 -0
  28. package/esm/common.js +8 -0
  29. package/esm/cron/server/index.js +1 -1
  30. package/esm/feedback/FeedbackController.js +1 -2
  31. package/esm/feedback/ui/DialogIssue.svelte +52 -56
  32. package/esm/feedback/ui/DialogIssues.svelte +71 -71
  33. package/esm/feedback/ui/DialogMilestones.svelte +22 -22
  34. package/esm/index.d.ts +2 -5
  35. package/esm/index.js +2 -8
  36. package/esm/mail/templates/DefaultMail.svelte +17 -17
  37. package/esm/storeItem.d.ts +1 -4
  38. package/esm/storeItem.js +1 -1
  39. package/esm/storeList.d.ts +1 -4
  40. package/esm/sveltekit/server/index.d.ts +3 -0
  41. package/esm/sveltekit/server/index.js +3 -0
  42. package/esm/ui/Button.svelte +33 -33
  43. package/esm/ui/Button.svelte.d.ts +2 -2
  44. package/esm/ui/Clipboardable.svelte +6 -6
  45. package/esm/ui/Clipboardable.svelte.d.ts +4 -4
  46. package/esm/ui/Field.svelte +139 -149
  47. package/esm/ui/Field.svelte.d.ts +2 -2
  48. package/esm/ui/FieldGroup.svelte +38 -38
  49. package/esm/ui/Grid.svelte +212 -222
  50. package/esm/ui/GridLoading.svelte +18 -22
  51. package/esm/ui/GridPaginate.svelte +38 -38
  52. package/esm/ui/Icon.svelte +50 -49
  53. package/esm/ui/Icon.svelte.d.ts +18 -18
  54. package/esm/ui/Loading.svelte +5 -5
  55. package/esm/ui/Tooltip.svelte +16 -16
  56. package/esm/ui/dialog/DialogForm.svelte +22 -22
  57. package/esm/ui/dialog/DialogManagement.svelte +74 -74
  58. package/esm/ui/dialog/DialogPrimitive.svelte +50 -50
  59. package/esm/ui/dialog/FormEditAction.svelte +34 -34
  60. package/esm/ui/dialog/dialog.d.ts +1 -4
  61. package/esm/ui/internals/FieldContainer.svelte +11 -11
  62. package/esm/ui/internals/FieldContainer.svelte.d.ts +3 -3
  63. package/esm/ui/internals/Input.svelte +25 -25
  64. package/esm/ui/internals/Input.svelte.d.ts +1 -1
  65. package/esm/ui/internals/Textarea.svelte +21 -21
  66. package/esm/ui/internals/Textarea.svelte.d.ts +2 -2
  67. package/esm/ui/internals/select/MultiSelectMelt.svelte +69 -73
  68. package/esm/ui/internals/select/SelectMelt.svelte +86 -86
  69. package/esm/ui/internals/select/SelectRadio.svelte +22 -22
  70. package/esm/ui/link/Link.svelte +14 -14
  71. package/esm/ui/link/Link.svelte.d.ts +3 -4
  72. package/esm/ui/link/LinkPlus.svelte +33 -35
  73. package/package.json +14 -18
  74. package/esm/auth/static/assets/Page-Bb8bFlrP.d.ts +0 -4
  75. package/esm/auth/static/assets/Page-Bb8bFlrP.js +0 -1
  76. package/esm/auth/static/assets/Page-BxomFlZ8.d.ts +0 -4
  77. package/esm/auth/static/assets/Page-BxomFlZ8.js +0 -1
  78. package/esm/auth/static/assets/Page-CaIYu0-y.d.ts +0 -6
  79. package/esm/auth/static/assets/Page-CaIYu0-y.js +0 -19
  80. package/esm/auth/static/assets/Page-MkYglNtu.css +0 -1
  81. package/esm/auth/static/assets/index-Bl0Bk5u0.d.ts +0 -64
  82. package/esm/auth/static/assets/index-Bl0Bk5u0.js +0 -2
  83. package/esm/auth/static/assets/index-R27C_TlP.css +0 -4
@@ -6,9 +6,9 @@ declare const __propDef: {
6
6
  required?: boolean;
7
7
  error?: string;
8
8
  /**
9
- * example usage for paginate
10
- * classes={{ label: 'justify-end' }}
11
- */ classes?: {
9
+ * example usage for paginate
10
+ * classes={{ label: 'justify-end' }}
11
+ */ classes?: {
12
12
  label?: string;
13
13
  slot?: string;
14
14
  };
@@ -77,33 +77,33 @@ const handleKeyup = (event) => {
77
77
  </script>
78
78
 
79
79
  <input
80
- use:focusNow
81
- class={tw('w-full px-2', className)}
82
- on:input={handleInput}
83
- bind:value
84
- on:blur
85
- on:change
86
- on:click
87
- on:focus
88
- on:keydown
89
- on:keypress
90
- on:keyup={handleKeyup}
91
- on:mouseover
92
- on:mouseenter
93
- on:mouseleave
94
- on:paste
95
- {...$$restProps}
80
+ use:focusNow
81
+ class={tw('w-full px-2', className)}
82
+ on:input={handleInput}
83
+ bind:value
84
+ on:blur
85
+ on:change
86
+ on:click
87
+ on:focus
88
+ on:keydown
89
+ on:keypress
90
+ on:keyup={handleKeyup}
91
+ on:mouseover
92
+ on:mouseenter
93
+ on:mouseleave
94
+ on:paste
95
+ {...$$restProps}
96
96
  />
97
97
 
98
98
  <style>
99
- input[type='number'] {
100
- -webkit-appearance: textfield;
101
- -moz-appearance: textfield;
102
- appearance: textfield;
103
- }
99
+ input[type='number'] {
100
+ -webkit-appearance: textfield;
101
+ -moz-appearance: textfield;
102
+ appearance: textfield;
103
+ }
104
104
 
105
- input[type='number']::-webkit-inner-spin-button,
106
- input[type='number']::-webkit-outer-spin-button {
107
- -webkit-appearance: none;
108
- }
105
+ input[type='number']::-webkit-inner-spin-button,
106
+ input[type='number']::-webkit-outer-spin-button {
107
+ -webkit-appearance: none;
108
+ }
109
109
  </style>
@@ -6,7 +6,7 @@ declare const __propDef: {
6
6
  value?: HTMLInputAttributes["value"];
7
7
  focus?: boolean | undefined;
8
8
  withDedounce?: boolean | undefined;
9
- class?: string | undefined | null;
9
+ class?: string | undefined | null | undefined;
10
10
  };
11
11
  events: {
12
12
  blur: FocusEvent;
@@ -32,30 +32,30 @@ function dispatchInput(value2) {
32
32
  </script>
33
33
 
34
34
  {#if readonly}
35
- <span class="flex min-h-8 max-w-full items-center px-3 py-1 text-sm md:min-h-[2.5rem]">
36
- <div class="overflow-hidden">
37
- {@html value ?? '-'}
38
- </div>
39
- </span>
35
+ <span class="flex min-h-8 max-w-full items-center px-3 py-1 text-sm md:min-h-[2.5rem]">
36
+ <div class="overflow-hidden">
37
+ {@html value ?? '-'}
38
+ </div>
39
+ </span>
40
40
  {:else}
41
- <textarea
42
- use:focusNow
43
- {...$$restProps}
44
- class="textarea textarea-bordered
41
+ <textarea
42
+ use:focusNow
43
+ {...$$restProps}
44
+ class="textarea textarea-bordered
45
45
  shadow-neutral-focus md:rounded-xls flex h-max min-h-8
46
46
  w-full items-center rounded-lg bg-transparent text-xs
47
47
  shadow-sm md:text-sm lg:min-h-[2.5rem]
48
48
  {scrollbar.thin}"
49
- id={id || name || 'default-textarea-id'}
50
- {name}
51
- {placeholder}
52
- autocomplete="off"
53
- bind:this={reference}
54
- bind:value
55
- {rows}
56
- on:input={(e) => {
57
- // @ts-ignore
58
- dispatchInput(e.target.value)
59
- }}
60
- ></textarea>
49
+ id={id || name || 'default-textarea-id'}
50
+ {name}
51
+ {placeholder}
52
+ autocomplete="off"
53
+ bind:this={reference}
54
+ bind:value
55
+ {rows}
56
+ on:input={(e) => {
57
+ // @ts-ignore
58
+ dispatchInput(e.target.value)
59
+ }}
60
+ ></textarea>
61
61
  {/if}
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
- name?: (string | null) | undefined;
5
+ name?: string | null | undefined;
6
6
  id?: string | undefined;
7
7
  rows?: number | undefined;
8
8
  placeholder?: string | undefined;
@@ -10,7 +10,7 @@ declare const __propDef: {
10
10
  value?: string | undefined;
11
11
  readonly?: boolean | undefined;
12
12
  error?: false | undefined;
13
- align?: (`left` | `right`) | undefined;
13
+ align?: `left` | `right` | undefined;
14
14
  };
15
15
  events: {
16
16
  input: CustomEvent<any>;
@@ -127,88 +127,84 @@ $: calcFilteredItems($touchedInput, $inputValue, values);
127
127
  </script>
128
128
 
129
129
  <div class="input input-bordered flex min-w-0 items-center">
130
- <div class="relative">
131
- {#if iconToDisplayInInput($localSelected)}
132
- {@const ico = iconToDisplayInInput($localSelected)}
133
- <Icon
134
- data={ico?.data}
135
- class={tw(['relative', ico?.class])}
136
- style={ico?.style}
137
- size={ico?.size}
138
- ></Icon>
139
- {/if}
140
- </div>
141
- <!-- {id} -->
142
- <input
143
- {...$input}
144
- use:$input.action
145
- class="-ml-8 -mr-5 h-full min-w-0 flex-grow bg-transparent px-10"
146
- {placeholder}
147
- />
148
- <div class="pointer-events-none relative right-0 flex gap-2">
149
- {#if clearable && $localSelected && $localSelected.length > 0}
150
- <button on:click={clearSelection} class="pointer-events-auto">
151
- <Icon data={LibIcon_Cross}></Icon>
152
- </button>
153
- {/if}
154
- <!-- {#if $open}
130
+ <div class="relative">
131
+ {#if iconToDisplayInInput($localSelected)}
132
+ {@const ico = iconToDisplayInInput($localSelected)}
133
+ <Icon data={ico?.data} class={tw(['relative', ico?.class])} style={ico?.style} size={ico?.size}
134
+ ></Icon>
135
+ {/if}
136
+ </div>
137
+ <!-- {id} -->
138
+ <input
139
+ {...$input}
140
+ use:$input.action
141
+ class="-ml-8 -mr-5 h-full min-w-0 flex-grow bg-transparent px-10"
142
+ {placeholder}
143
+ />
144
+ <div class="pointer-events-none relative right-0 flex gap-2">
145
+ {#if clearable && $localSelected && $localSelected.length > 0}
146
+ <button on:click={clearSelection} class="pointer-events-auto">
147
+ <Icon data={LibIcon_Cross}></Icon>
148
+ </button>
149
+ {/if}
150
+ <!-- {#if $open}
155
151
  <Icon data={LibIcon_ChevronUp}></Icon>
156
152
  {:else}
157
153
  <Icon data={LibIcon_ChevronDown}></Icon>
158
154
  {/if} -->
159
- </div>
155
+ </div>
160
156
  </div>
161
157
 
162
158
  {#if $open}
163
- <ul
164
- class="border-base-content/20 z-50 flex max-h-[300px] flex-col overflow-hidden rounded-lg border"
165
- {...$menu}
166
- use:$menu.action
167
- transition:fly={{ duration: 150, y: -5 }}
168
- >
169
- <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
170
- <div class="bg-base-100 flex max-h-full flex-col gap-0 overflow-y-auto py-2" tabindex="0">
171
- {#each filteredItems as item, index (index)}
172
- <li
173
- {...$option(toOption(item))}
174
- use:$option.action
175
- class="data-[highlighted]:bg-primary data-[highlighted]:text-primary-content relative flex cursor-pointer scroll-my-2 items-center
159
+ <ul
160
+ class="border-base-content/20 z-50 flex max-h-[300px] flex-col overflow-hidden rounded-lg border"
161
+ {...$menu}
162
+ use:$menu.action
163
+ transition:fly={{ duration: 150, y: -5 }}
164
+ >
165
+ <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
166
+ <div class="bg-base-100 flex max-h-full flex-col gap-0 overflow-y-auto py-2" tabindex="0">
167
+ {#each filteredItems as item, index (index)}
168
+ <li
169
+ {...$option(toOption(item))}
170
+ use:$option.action
171
+ class="data-[highlighted]:bg-primary data-[highlighted]:text-primary-content relative flex cursor-pointer scroll-my-2 items-center
176
172
  rounded-md
177
173
  px-1
178
174
  py-2
179
175
  data-[disabled]:opacity-50"
180
- >
181
- {#if isChecked($localSelected, item)}
182
- <Icon data={LibIcon_Check} class="w-6"></Icon>
183
- {:else}
184
- <!-- just to book the place -->
185
- <span class="w-6"></span>
186
- {/if}
187
- {#if item.icon?.data}
188
- <Icon
189
- data={item.icon.data}
190
- class={tw(['flex-shrink-0', item.icon.class])}
191
- style={item.icon.style}
192
- size={item.icon.size}
193
- ></Icon>
194
- {/if}
195
- <div class="pl-2 {item.class}">
196
- <span class="font-medium">{item.caption}</span>
197
- </div>
198
- </li>
199
- {:else}
200
- <li class="relative cursor-pointer rounded-md py-1 pl-8 pr-4">Aucun résultat</li>
201
- {/each}
202
- </div>
203
- {#if totalCount}
204
- <div class="bg-base-300 z-50 text-center text-xs">
205
- {#if items.length < totalCount}
206
- ({items.length} / {totalCount})
207
- {:else}
208
- <!-- yes, items.length can be bigger if the selected item is not in the limit -->
209
- ({items.length})
210
- {/if}
211
- </div>
212
- {/if}
213
- </ul>
176
+ >
177
+ {#if isChecked($localSelected, item)}
178
+ <Icon data={LibIcon_Check} class="w-6"></Icon>
179
+ {:else}
180
+ <!-- just to book the place -->
181
+ <span class="w-6"></span>
182
+ {/if}
183
+ {#if item.icon?.data}
184
+ <Icon
185
+ data={item.icon.data}
186
+ class={tw(['flex-shrink-0', item.icon.class])}
187
+ style={item.icon.style}
188
+ size={item.icon.size}
189
+ ></Icon>
190
+ {/if}
191
+ <div class="pl-2 {item.class}">
192
+ <span class="font-medium">{item.caption}</span>
193
+ </div>
194
+ </li>
195
+ {:else}
196
+ <li class="relative cursor-pointer rounded-md py-1 pl-8 pr-4">Aucun résultat</li>
197
+ {/each}
198
+ </div>
199
+ {#if totalCount}
200
+ <div class="bg-base-300 z-50 text-center text-xs">
201
+ {#if items.length < totalCount}
202
+ ({items.length} / {totalCount})
203
+ {:else}
204
+ <!-- yes, items.length can be bigger if the selected item is not in the limit -->
205
+ ({items.length})
206
+ {/if}
207
+ </div>
208
+ {/if}
209
+ </ul>
214
210
  {/if}
@@ -134,101 +134,101 @@ $: calcFilteredItems($touchedInput, $inputValue, value);
134
134
  </script>
135
135
 
136
136
  <div class="input input-bordered flex min-w-0 items-center {disabled && 'opacity-40'}">
137
- <div class="relative">
138
- {#if $localSelected?.value?.icon?.data}
139
- <Icon
140
- data={$localSelected.value.icon.data}
141
- class={tw(['relative', $localSelected.value.icon.class])}
142
- style={$localSelected.value.icon.style}
143
- size={$localSelected.value.icon.size}
144
- ></Icon>
145
- {:else}
146
- <Icon data={LibIcon_Search} class="relative"></Icon>
147
- {/if}
148
- </div>
149
- <!-- {id} -->
150
- <input
151
- {...$input}
152
- use:$input.action
153
- class="-ml-8 -mr-5 h-full min-w-0 flex-grow bg-transparent px-10"
154
- {placeholder}
155
- use:focusNow
156
- />
157
- <div class="pointer-events-none relative right-0 flex gap-2">
158
- {#if clearable && $localSelected}
159
- <button on:click={clearSelection} class="pointer-events-auto">
160
- <Icon data={LibIcon_Cross}></Icon>
161
- </button>
162
- {/if}
163
- <!-- {#if $open}
137
+ <div class="relative">
138
+ {#if $localSelected?.value?.icon?.data}
139
+ <Icon
140
+ data={$localSelected.value.icon.data}
141
+ class={tw(['relative', $localSelected.value.icon.class])}
142
+ style={$localSelected.value.icon.style}
143
+ size={$localSelected.value.icon.size}
144
+ ></Icon>
145
+ {:else}
146
+ <Icon data={LibIcon_Search} class="relative"></Icon>
147
+ {/if}
148
+ </div>
149
+ <!-- {id} -->
150
+ <input
151
+ {...$input}
152
+ use:$input.action
153
+ class="-ml-8 -mr-5 h-full min-w-0 flex-grow bg-transparent px-10"
154
+ {placeholder}
155
+ use:focusNow
156
+ />
157
+ <div class="pointer-events-none relative right-0 flex gap-2">
158
+ {#if clearable && $localSelected}
159
+ <button on:click={clearSelection} class="pointer-events-auto">
160
+ <Icon data={LibIcon_Cross}></Icon>
161
+ </button>
162
+ {/if}
163
+ <!-- {#if $open}
164
164
  <Icon data={LibIcon_ChevronUp}></Icon>
165
165
  {:else}
166
166
  <Icon data={LibIcon_ChevronDown}></Icon>
167
167
  {/if} -->
168
- </div>
168
+ </div>
169
169
  </div>
170
170
 
171
171
  {#if $open}
172
- <ul
173
- class="border-base-content/20 z-50 flex max-h-[300px] flex-col overflow-hidden rounded-lg border"
174
- {...$menu}
175
- use:$menu.action
176
- transition:fly={{ duration: 150, y: -5 }}
177
- >
178
- <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
179
- <div class="bg-base-100 flex max-h-full flex-col gap-0 overflow-y-auto py-2" tabindex="0">
180
- {#each filteredItems as item, index (index)}
181
- <li
182
- {...$option(toOption(item))}
183
- use:$option.action
184
- class="data-[highlighted]:bg-primary data-[highlighted]:text-primary-content relative flex cursor-pointer scroll-my-2 items-center
172
+ <ul
173
+ class="border-base-content/20 z-50 flex max-h-[300px] flex-col overflow-hidden rounded-lg border"
174
+ {...$menu}
175
+ use:$menu.action
176
+ transition:fly={{ duration: 150, y: -5 }}
177
+ >
178
+ <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
179
+ <div class="bg-base-100 flex max-h-full flex-col gap-0 overflow-y-auto py-2" tabindex="0">
180
+ {#each filteredItems as item, index (index)}
181
+ <li
182
+ {...$option(toOption(item))}
183
+ use:$option.action
184
+ class="data-[highlighted]:bg-primary data-[highlighted]:text-primary-content relative flex cursor-pointer scroll-my-2 items-center
185
185
  rounded-md
186
186
  px-1
187
187
  py-2
188
188
  data-[disabled]:opacity-50"
189
- >
190
- {#if $localSelected?.value?.id === item.id}
191
- <Icon data={LibIcon_Check} class="w-6"></Icon>
192
- {:else}
193
- <!-- just to book the place -->
194
- <span class="w-6"></span>
195
- {/if}
196
- {#if item.icon?.data}
197
- <Icon
198
- data={item.icon.data}
199
- class={tw(['flex-shrink-0', item.icon.class])}
200
- style={item.icon.style}
201
- size={item.icon.size}
202
- ></Icon>
203
- {/if}
204
- <div class="pl-2">
205
- <span class="font-medium">{item.caption}</span>
206
- </div>
207
- </li>
208
- {:else}
209
- {#if createOptionWhenNoResult}
210
- <div class="p-4">
211
- <Button
212
- class="w-full"
213
- on:click={(e) => {
214
- dispatchCreateRequest(e, $inputValue)
215
- }}>Créer "{$inputValue}"</Button
216
- >
217
- </div>
218
- {:else}
219
- <li class="relative cursor-pointer rounded-md py-1 pl-8 pr-4">Aucun résultat</li>
220
- {/if}
221
- {/each}
222
- </div>
223
- {#if totalCount}
224
- <div class="bg-base-300 z-50 text-center text-xs">
225
- {#if items.length < totalCount}
226
- ({items.length} / {totalCount})
227
- {:else}
228
- <!-- yes, items.length can be bigger if the selected item is not in the limit -->
229
- ({items.length})
230
- {/if}
231
- </div>
232
- {/if}
233
- </ul>
189
+ >
190
+ {#if $localSelected?.value?.id === item.id}
191
+ <Icon data={LibIcon_Check} class="w-6"></Icon>
192
+ {:else}
193
+ <!-- just to book the place -->
194
+ <span class="w-6"></span>
195
+ {/if}
196
+ {#if item.icon?.data}
197
+ <Icon
198
+ data={item.icon.data}
199
+ class={tw(['flex-shrink-0', item.icon.class])}
200
+ style={item.icon.style}
201
+ size={item.icon.size}
202
+ ></Icon>
203
+ {/if}
204
+ <div class="pl-2">
205
+ <span class="font-medium">{item.caption}</span>
206
+ </div>
207
+ </li>
208
+ {:else}
209
+ {#if createOptionWhenNoResult}
210
+ <div class="p-4">
211
+ <Button
212
+ class="w-full"
213
+ on:click={(e) => {
214
+ dispatchCreateRequest(e, $inputValue)
215
+ }}>Créer "{$inputValue}"</Button
216
+ >
217
+ </div>
218
+ {:else}
219
+ <li class="relative cursor-pointer rounded-md py-1 pl-8 pr-4">Aucun résultat</li>
220
+ {/if}
221
+ {/each}
222
+ </div>
223
+ {#if totalCount}
224
+ <div class="bg-base-300 z-50 text-center text-xs">
225
+ {#if items.length < totalCount}
226
+ ({items.length} / {totalCount})
227
+ {:else}
228
+ <!-- yes, items.length can be bigger if the selected item is not in the limit -->
229
+ ({items.length})
230
+ {/if}
231
+ </div>
232
+ {/if}
233
+ </ul>
234
234
  {/if}
@@ -12,26 +12,26 @@ function dispatchSelected(_data) {
12
12
  </script>
13
13
 
14
14
  <div {id} class="input input-bordered flex w-fit min-w-0 items-center">
15
- <div class="-mx-2 flex gap-2" title={placeholder}>
16
- {#each items as item}
17
- <button
18
- {disabled}
19
- on:click={() => {
20
- value = item.id
21
- dispatchSelected(items.find((i) => i.id === item.id))
22
- }}
23
- type="button"
24
- class="min-w-0 cursor-pointer rounded-md px-1.5 py-1 {value === item.id
25
- ? 'bg-primary text-primary-content'
26
- : ''}"
27
- >
28
- <div class="flex gap-2">
29
- {#if item.icon}
30
- <Icon {...item.icon} />
31
- {/if}
32
- {item.caption}
33
- </div>
34
- </button>
35
- {/each}
36
- </div>
15
+ <div class="-mx-2 flex gap-2" title={placeholder}>
16
+ {#each items as item}
17
+ <button
18
+ {disabled}
19
+ on:click={() => {
20
+ value = item.id
21
+ dispatchSelected(items.find((i) => i.id === item.id))
22
+ }}
23
+ type="button"
24
+ class="min-w-0 cursor-pointer rounded-md px-1.5 py-1 {value === item.id
25
+ ? 'bg-primary text-primary-content'
26
+ : ''}"
27
+ >
28
+ <div class="flex gap-2">
29
+ {#if item.icon}
30
+ <Icon {...item.icon} />
31
+ {/if}
32
+ {item.caption}
33
+ </div>
34
+ </button>
35
+ {/each}
36
+ </div>
37
37
  </div>
@@ -7,22 +7,22 @@ export { className as class };
7
7
  </script>
8
8
 
9
9
  <a
10
- class={`${daisy[kind]} link inline-block text-left no-underline hover:underline ${className ?? ''}`}
11
- {href}
12
- rel="noopener"
13
- {target}
14
- {...$$restProps}
10
+ class={`${daisy[kind]} link inline-block text-left no-underline hover:underline ${className ?? ''}`}
11
+ {href}
12
+ rel="noopener"
13
+ {target}
14
+ {...$$restProps}
15
15
  >
16
- <slot />
16
+ <slot />
17
17
  </a>
18
18
 
19
19
  <style>
20
- a[target='_blank']::after {
21
- display: inline-block;
22
- content: '⇱';
23
- position: relative;
24
- top: -3px;
25
- margin-left: 3px;
26
- transform: rotate(90deg);
27
- }
20
+ a[target='_blank']::after {
21
+ display: inline-block;
22
+ content: '⇱';
23
+ position: relative;
24
+ top: -3px;
25
+ margin-left: 3px;
26
+ transform: rotate(90deg);
27
+ }
28
28
  </style>
@@ -1,12 +1,11 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { HTMLAnchorAttributes } from 'svelte/elements';
3
2
  declare const __propDef: {
4
3
  props: {
5
4
  [x: string]: any;
6
5
  href: string;
7
- target?: HTMLAnchorAttributes["target"];
8
- kind?: ("info" | "ghost") | undefined;
9
- class?: string | undefined | null;
6
+ target?: import("svelte/elements").HTMLAttributeAnchorTarget | null | undefined;
7
+ kind?: "info" | "ghost" | undefined;
8
+ class?: string | undefined | null | undefined;
10
9
  };
11
10
  events: {
12
11
  [evt: string]: CustomEvent<any>;