@turnipxenon/pineapple 5.0.0 → 5.2.0-alpha.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 (77) hide show
  1. package/README.md +11 -11
  2. package/dist/remoteIndex.remote.d.ts +1 -0
  3. package/dist/remoteIndex.remote.d.ts.map +1 -1
  4. package/dist/remoteIndex.remote.js +1 -0
  5. package/dist/styles/color-tokens.css +2 -0
  6. package/dist/svelteIndex.svelte.d.ts +3 -0
  7. package/dist/svelteIndex.svelte.d.ts.map +1 -0
  8. package/dist/svelteIndex.svelte.js +13 -0
  9. package/dist/ui/components/FourPartCard.svelte +4 -0
  10. package/dist/ui/components/SortDropdown.svelte +50 -0
  11. package/dist/ui/components/SortDropdown.svelte.d.ts +9 -0
  12. package/dist/ui/components/SortDropdown.svelte.d.ts.map +1 -0
  13. package/dist/ui/components/TagFilter.svelte +32 -0
  14. package/dist/ui/components/TagFilter.svelte.d.ts +9 -0
  15. package/dist/ui/components/TagFilter.svelte.d.ts.map +1 -0
  16. package/dist/ui/components/accordion/PinyaAccordion.svelte +5 -3
  17. package/dist/ui/components/accordion/PinyaAccordion.svelte.d.ts.map +1 -1
  18. package/dist/ui/components/index.d.ts +2 -0
  19. package/dist/ui/components/index.d.ts.map +1 -1
  20. package/dist/ui/components/index.js +2 -0
  21. package/dist/ui/components/project-date-badge/ProjectDateBadge.svelte +160 -0
  22. package/dist/ui/components/project-date-badge/ProjectDateBadge.svelte.d.ts +5 -0
  23. package/dist/ui/components/project-date-badge/ProjectDateBadge.svelte.d.ts.map +1 -0
  24. package/dist/ui/components/project-date-badge/ProjectDateBageProps.d.ts +8 -0
  25. package/dist/ui/components/project-date-badge/ProjectDateBageProps.d.ts.map +1 -0
  26. package/dist/ui/components/project-date-badge/ProjectDateBageProps.js +1 -0
  27. package/dist/ui/elements/CodeBlock/CodeBlock.svelte +12 -6
  28. package/dist/ui/elements/PineappleSwitch.svelte +2 -2
  29. package/dist/ui/elements/PineappleSwitch.svelte.d.ts +1 -1
  30. package/dist/ui/elements/PineappleSwitch.svelte.d.ts.map +1 -1
  31. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte +169 -26
  32. package/dist/ui/elements/pinya-combobox/PinyaCombobox.svelte.d.ts.map +1 -1
  33. package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts +6 -7
  34. package/dist/ui/elements/pinya-combobox/PinyaComboboxProps.d.ts.map +1 -1
  35. package/dist/ui/modules/experience/ExampleJob1.svelte +79 -0
  36. package/dist/ui/modules/experience/ExampleJob1.svelte.d.ts +26 -0
  37. package/dist/ui/modules/experience/ExampleJob1.svelte.d.ts.map +1 -0
  38. package/dist/ui/modules/experience/ExampleJob2.svelte +74 -0
  39. package/dist/ui/modules/experience/ExampleJob2.svelte.d.ts +25 -0
  40. package/dist/ui/modules/experience/ExampleJob2.svelte.d.ts.map +1 -0
  41. package/dist/ui/modules/experience/index.d.ts +3 -0
  42. package/dist/ui/modules/experience/index.d.ts.map +1 -0
  43. package/dist/ui/modules/experience/index.js +2 -0
  44. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte +7 -9
  45. package/dist/ui/modules/modals/general-settings/LanguagePicker.svelte.d.ts.map +1 -1
  46. package/dist/ui/modules/projects/Hepcat.svelte +15 -1
  47. package/dist/ui/modules/projects/Hepcat.svelte.d.ts +5 -1
  48. package/dist/ui/modules/projects/Hepcat.svelte.d.ts.map +1 -1
  49. package/dist/ui/modules/projects/ObsidianPublisher.svelte +73 -0
  50. package/dist/ui/modules/projects/ObsidianPublisher.svelte.d.ts +26 -0
  51. package/dist/ui/modules/projects/ObsidianPublisher.svelte.d.ts.map +1 -0
  52. package/dist/ui/modules/projects/Pengi.svelte +15 -1
  53. package/dist/ui/modules/projects/Pengi.svelte.d.ts +6 -1
  54. package/dist/ui/modules/projects/Pengi.svelte.d.ts.map +1 -1
  55. package/dist/ui/modules/projects/Soulwork.svelte +14 -1
  56. package/dist/ui/modules/projects/Soulwork.svelte.d.ts +5 -1
  57. package/dist/ui/modules/projects/Soulwork.svelte.d.ts.map +1 -1
  58. package/dist/ui/modules/projects/ThisWebpage.svelte +20 -6
  59. package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts +5 -1
  60. package/dist/ui/modules/projects/ThisWebpage.svelte.d.ts.map +1 -1
  61. package/dist/ui/modules/projects/index.d.ts.map +1 -1
  62. package/dist/ui/modules/universal-overlay/UniversalOverlay.svelte +0 -1
  63. package/dist/ui/modules/universal-overlay/UniversalOverlay.svelte.d.ts.map +1 -1
  64. package/dist/ui/templates/SeaweedLayout/EntryGroup.svelte +223 -29
  65. package/dist/ui/templates/SeaweedLayout/EntryGroup.svelte.d.ts.map +1 -1
  66. package/dist/ui/templates/SeaweedLayout/ProjectComponentProps.d.ts +2 -0
  67. package/dist/ui/templates/SeaweedLayout/ProjectComponentProps.d.ts.map +1 -1
  68. package/dist/ui/templates/SeaweedLayout/ProjectGroupConfig.svelte +1 -3
  69. package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte +188 -44
  70. package/dist/ui/templates/SeaweedLayout/SeaweedLayout.svelte.d.ts.map +1 -1
  71. package/dist/ui/templates/SeaweedLayout/props.d.ts +23 -2
  72. package/dist/ui/templates/SeaweedLayout/props.d.ts.map +1 -1
  73. package/dist/ui/templates/SeaweedLayout/props.js +8 -1
  74. package/dist/util/getCommitDate.remote.d.ts +14 -0
  75. package/dist/util/getCommitDate.remote.d.ts.map +1 -0
  76. package/dist/util/getCommitDate.remote.js +133 -0
  77. package/package.json +8 -2
@@ -1,42 +1,132 @@
1
- <!-- TODO: Documentation: consider documentation showcase -->
2
-
3
1
  <script lang="ts" generics="T extends string">
4
2
  import type { PinyaComboboxProps } from "./PinyaComboboxProps";
5
3
  import { Combobox } from "melt/builders";
4
+ import { SvelteSet } from "svelte/reactivity";
6
5
 
7
6
  let {
8
7
  // todo: fix this
9
- contentZIndex = "auto",
10
- value = $bindable(),
8
+ value = $bindable([]),
11
9
  onValueChange = () => {
12
10
  },
13
- onValueChangeBase = undefined,
11
+ multiple = false,
12
+ name = "",
14
13
  ...props
15
14
  }: PinyaComboboxProps<T> = $props();
16
15
 
17
- const onValueChangeBaseImpl = (e: T | undefined) => {
18
- value = e;
19
- console.log("change", e);
20
- onValueChange({
21
- value: e,
22
- items: props.data
23
- });
24
- };
16
+ const uid = $props.id();
17
+ const _name = $derived(name ? name : `combobox-${uid}`);
25
18
 
26
- const combobox = new Combobox<T, false>({
27
- value: props.defaultValue,
28
- inputValue: function() {
29
- return props.data.find((o) => o.value === value)?.label ?? "---";
19
+ const combobox = $derived(new Combobox({
20
+ value: (() => {
21
+ if (value) {
22
+ if (multiple) {
23
+ return value;
24
+ } else if (value.length > 0) {
25
+ return value[0];
26
+ }
27
+ }
28
+
29
+ return undefined;
30
+ })(),
31
+ // todo: investigate later why typescript says it's the wrong type?
32
+ onValueChange: (t: T | SvelteSet<T> | undefined) => {
33
+ if (t instanceof SvelteSet) {
34
+ if (t.size > 0) {
35
+ value = [...t];
36
+ } else {
37
+ value = [];
38
+ }
39
+ } else if (t) {
40
+ value = [t];
41
+ } else {
42
+ value = [];
43
+ }
44
+ onValueChange?.(value);
30
45
  },
31
- onValueChange: onValueChangeBase ?? onValueChangeBaseImpl,
32
- });
46
+ inputValue: (() => {
47
+ if (value.length === props.data.length) {
48
+ return "All";
49
+ }
50
+ if (value.length === 0) {
51
+ return "---";
52
+ }
53
+ return props.data.filter(d => value.includes(d.value))
54
+ .map(d => d.label)
55
+ .join(", ");
56
+ })(),
57
+ multiple
58
+ }));
59
+
60
+ let inputValue = $state("");
61
+ let wrapperEl: HTMLDivElement | undefined = $state();
62
+
63
+ const onfocusin = (event: FocusEvent) => {
64
+ // Don't clear filter when navigating to/between options
65
+ const target = event.target as HTMLElement;
66
+ if (!target?.hasAttribute('data-melt-combobox-option')) {
67
+ inputValue = "";
68
+ }
69
+ };
70
+
71
+ const onblur = (event: FocusEvent) => {
72
+ // Don't reset if focus moved to another element within the wrapper
73
+ if (wrapperEl && event.relatedTarget instanceof Node && wrapperEl.contains(event.relatedTarget)) {
74
+ return;
75
+ }
76
+
77
+ if (value.length === props.data.length) {
78
+ inputValue = "All";
79
+ return;
80
+ }
81
+ if (value.length === 0) {
82
+ inputValue = "---";
83
+ return;
84
+ }
85
+
86
+ inputValue = props.data.filter(d => value.includes(d.value))
87
+ .map(d => d.label)
88
+ .join(", ");
89
+ };
90
+
91
+ const onOptionKeydown = (event: KeyboardEvent, index: number) => {
92
+ const options = wrapperEl?.querySelectorAll<HTMLElement>('[data-melt-combobox-option]');
93
+ if (!options) return;
94
+
95
+ if (event.key === 'ArrowDown') {
96
+ event.preventDefault();
97
+ options[index + 1]?.focus();
98
+ } else if (event.key === 'ArrowUp') {
99
+ event.preventDefault();
100
+ if (index === 0) {
101
+ wrapperEl?.querySelector<HTMLElement>('input')?.focus();
102
+ } else {
103
+ options[index - 1]?.focus();
104
+ }
105
+ }
106
+ };
107
+
108
+ const onInputKeydown = (event: KeyboardEvent) => {
109
+ if (event.key === 'Tab' && !event.shiftKey && combobox.open) {
110
+ event.preventDefault();
111
+ const firstOption = wrapperEl?.querySelector('[data-melt-combobox-option]') as HTMLElement | null;
112
+ if (firstOption) {
113
+ firstOption.focus();
114
+ return;
115
+ }
116
+ }
117
+ // Delegate to Melt's keydown handler for all other keys
118
+ (combobox.input as { onkeydown?: (e: KeyboardEvent) => void }).onkeydown?.(event);
119
+ };
33
120
 
34
121
  const filtered = $derived.by(() => {
35
122
  if (!combobox.touched) return props.data;
36
123
  return props.data.filter((o) =>
37
- o.value.toLowerCase().includes(combobox.inputValue.trim().toLowerCase())
124
+ o.value.toLowerCase().includes(inputValue.trim().toLowerCase())
125
+ || o.label.toLowerCase().includes(inputValue.trim().toLowerCase())
38
126
  );
39
127
  });
128
+
129
+ const clearAll = () => value = [];
40
130
  </script>
41
131
 
42
132
  <!--
@@ -46,10 +136,29 @@ Melt-based Combobox
46
136
  When migrating from Skeleton to Melt, change the value is no longer an array T[] but it's now T | undefined
47
137
  -->
48
138
 
49
- <div class={`pinya-combobox-wrapper ${props.class}`} {...props}>
50
- <label {...combobox.label}>{props.label}</label>
139
+ <div
140
+ class={`pinya-combobox-wrapper ${props.class}`}
141
+ {...props}
142
+ onfocusin={onfocusin}
143
+ onfocusout={onblur}
144
+ bind:this={wrapperEl}
145
+ >
146
+ <div class="label-section">
147
+ <label {...combobox.label} for={_name}>{props.label}</label>
148
+ {#if value.length > 0 && multiple}
149
+ <button class="clear-btn" onclick={clearAll}>Clear all</button>
150
+ {:else }
151
+ <button class="clear-btn invisible" onclick={clearAll}>Clear all</button>
152
+ {/if}
153
+ </div>
51
154
  <div class="pinya-combobox-control">
52
- <input {...combobox.input} disabled={props.disabled} />
155
+ <input
156
+ {...combobox.input}
157
+ disabled={props.disabled}
158
+ name={_name}
159
+ bind:value={inputValue}
160
+ onkeydown={onInputKeydown}
161
+ />
53
162
  <button class="size-[3rem]" {...combobox.trigger} disabled={props.disabled}>
54
163
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="opacity: 0.5" class="size-[2rem] m-auto">
55
164
  <path d="m6 9 6 6 6-6"></path>
@@ -59,13 +168,13 @@ When migrating from Skeleton to Melt, change the value is no longer an array T[]
59
168
 
60
169
 
61
170
  <div {...combobox.content}>
62
- {#each filtered as option (option)}
63
- <div {...combobox.getOption(option.value)}>
171
+ {#each filtered as option, i (option)}
172
+ <button {...combobox.getOption(option.value)} tabindex="0" onkeydown={(e) => onOptionKeydown(e, i)}>
64
173
  {option.label}
65
174
  {#if combobox.isSelected(option.value)}
66
175
 
67
176
  {/if}
68
- </div>
177
+ </button>
69
178
  {:else}
70
179
  <span>No results found</span>
71
180
  {/each}
@@ -95,11 +204,20 @@ When migrating from Skeleton to Melt, change the value is no longer an array T[]
95
204
  }
96
205
  [data-melt-combobox-content][data-open] {
97
206
  display: flex;
207
+ overflow-y: auto;
208
+ max-height: 8lh;
98
209
  }
99
210
  [data-melt-combobox-content] [data-melt-combobox-option] {
100
211
  padding-block: calc(var(--spacing) * 1);
101
212
  padding-inline: calc(var(--spacing) * 4);
102
213
  border-radius: var(--radius-lg);
214
+ background: none;
215
+ border: none;
216
+ width: 100%;
217
+ text-align: left;
218
+ font: inherit;
219
+ color: inherit;
220
+ cursor: pointer;
103
221
  }
104
222
  [data-melt-combobox-content] [data-melt-combobox-option][aria-selected=true] {
105
223
  background-color: light-dark(var(--color-secondary-400), var(--color-secondary-600));
@@ -108,6 +226,7 @@ When migrating from Skeleton to Melt, change the value is no longer an array T[]
108
226
  .pinya-combobox-wrapper {
109
227
  display: flex;
110
228
  flex-direction: column;
229
+ gap: 0.2lh;
111
230
  }
112
231
 
113
232
  .pinya-combobox-control {
@@ -128,4 +247,28 @@ When migrating from Skeleton to Melt, change the value is no longer an array T[]
128
247
  text-overflow: ellipsis;
129
248
  padding: var(--spacing-2) var(--spacing-4);
130
249
  padding-right: 0;
250
+ }
251
+
252
+ .clear-btn {
253
+ font-size: 0.75rem;
254
+ padding: 0.25rem 0.5rem;
255
+ border-radius: var(--radius-md);
256
+ border: 1px solid var(--color-primary-500);
257
+ background: transparent;
258
+ color: var(--color-primary-500);
259
+ cursor: pointer;
260
+ transition: background-color 0.2s;
261
+ }
262
+ .clear-btn.invisible {
263
+ pointer-events: none;
264
+ opacity: 0;
265
+ }
266
+
267
+ .clear-btn:hover {
268
+ background: var(--color-primary-100);
269
+ }
270
+
271
+ .label-section {
272
+ display: flex;
273
+ gap: 0.5em;
131
274
  }</style>
@@ -1 +1 @@
1
- {"version":3,"file":"PinyaCombobox.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/elements/pinya-combobox/PinyaCombobox.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAE7F,iBAAS,QAAQ,CAAC,CAAC,SAAS,MAAM;WAuEL,kBAAkB,CAAC,CAAC,CAAC;;;;;EAAiF;AACnI,cAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM;IACpC,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,MAAM,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,QAAQ;IACR,OAAO;CACV;AAED,UAAU,qBAAqB;IAC3B,KAAK,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3Y,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1I,YAAY,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CACjE;AACD;;;;GAIG;AACH,QAAA,MAAM,aAAa,EAAE,qBAAmC,CAAC;AACvC,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"PinyaCombobox.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/elements/pinya-combobox/PinyaCombobox.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAG7F,iBAAS,QAAQ,CAAC,CAAC,SAAS,MAAM;WAwKL,kBAAkB,CAAC,CAAC,CAAC;;;;;EAAiF;AACnI,cAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM;IACpC,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,MAAM,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,QAAQ;IACR,OAAO;CACV;AAED,UAAU,qBAAqB;IAC3B,KAAK,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3Y,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1I,YAAY,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CACjE;AACD;;;;GAIG;AACH,QAAA,MAAM,aAAa,EAAE,qBAAmC,CAAC;AACvC,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,eAAe,aAAa,CAAC"}
@@ -9,13 +9,12 @@ export interface ValueChangeDetails<T extends string> {
9
9
  }
10
10
  export type PinyaComboboxProps<T extends string> = {
11
11
  data: GenericComboboxItem<T>[];
12
- defaultValue: T | undefined;
13
- value: T | undefined;
14
- label: string;
15
- placeholder: string;
16
- onValueChange?: (selectedList: ValueChangeDetails<T>) => void;
17
- onValueChangeBase?: (e: T | undefined) => void;
18
- contentZIndex?: string;
12
+ value?: T[];
13
+ label?: string;
14
+ name?: string;
15
+ placeholder?: string;
16
+ onValueChange?: (selectedList: T[]) => void;
19
17
  disabled?: boolean;
18
+ multiple?: boolean;
20
19
  } & HTMLAttributes<HTMLDivElement>;
21
20
  //# sourceMappingURL=PinyaComboboxProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PinyaComboboxProps.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/elements/pinya-combobox/PinyaComboboxProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IACnD,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;CAC/B;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI;IAElD,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9B,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;IAE5B,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAG9D,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"PinyaComboboxProps.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/elements/pinya-combobox/PinyaComboboxProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IACnD,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;CAC/B;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI;IAElD,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;IAE9B,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC"}
@@ -0,0 +1,79 @@
1
+ <!-- TODO: Documentation: consider documentation showcase -->
2
+
3
+ <script module lang="ts">
4
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
5
+ import { TextChip } from "../../elements/TextChip";
6
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
7
+
8
+ const key = "Software Engineer at Old Company";
9
+ const dateStarted = "2022-01-01";
10
+ const dateFinished = "2024-12-31";
11
+ const tags = ["typescript", "svelte", "web"];
12
+
13
+ // note that we can cheat the regex by doing this!
14
+ // qt-web
15
+ export { component, key, dateStarted, dateFinished, tags };
16
+ </script>
17
+
18
+ <script lang="ts">
19
+
20
+ </script>
21
+
22
+ {#snippet component(props: ProjectComponentProps)}
23
+ <FourPartCard>
24
+ {#snippet headerCover()}
25
+ <div class="company-logo-placeholder">
26
+ <h1>CX</h1>
27
+ </div>
28
+ {/snippet}
29
+
30
+ {#snippet header()}
31
+ <h3>Software Engineer</h3>
32
+ <h4>Old Company</h4>
33
+ <p class="date-range">Jan 2022 - Dec 2024</p>
34
+ {/snippet}
35
+
36
+ <p>
37
+ <span class="qt-typescript">TypeScript</span> and
38
+ <span class="qt-svelte">Svelte</span>. Why would anyone hire that though?
39
+ </p>
40
+
41
+ <div class="text-chip-container">
42
+ {#each tags as t (t)}
43
+ <TextChip queryClass="qt-{t}">{t}</TextChip>
44
+ {/each}
45
+ </div>
46
+ </FourPartCard>
47
+ {/snippet}
48
+
49
+ <style>
50
+ :global {
51
+ .company-logo-placeholder {
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ width: 100%;
56
+ height: 100%;
57
+ min-height: 150px;
58
+ background: linear-gradient(135deg, var(--color-primary-500), var(--color-secondary-500));
59
+ color: white;
60
+ font-size: 2rem;
61
+ font-weight: bold;
62
+ border-top-right-radius: var(--radius-xl);
63
+ border-top-left-radius: var(--radius-xl);
64
+ }
65
+
66
+ }
67
+
68
+ .date-range {
69
+ font-size: 0.875rem;
70
+ color: var(--color-text-secondary);
71
+ margin-bottom: 0.5rem;
72
+ }
73
+
74
+ h4 {
75
+ margin-top: 0.25rem;
76
+ margin-bottom: 0.5rem;
77
+ color: var(--color-text-secondary);
78
+ }
79
+ </style>
@@ -0,0 +1,26 @@
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
+ declare const key = "Software Engineer at Old Company";
3
+ declare const dateStarted = "2022-01-01";
4
+ declare const dateFinished = "2024-12-31";
5
+ declare const tags: string[];
6
+ export { component, key, dateStarted, dateFinished, tags };
7
+ declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
8
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
9
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
10
+ $$bindings?: Bindings;
11
+ } & Exports;
12
+ (internal: unknown, props: {
13
+ $$events?: Events;
14
+ $$slots?: Slots;
15
+ }): Exports & {
16
+ $set?: any;
17
+ $on?: any;
18
+ };
19
+ z_$$bindings?: Bindings;
20
+ }
21
+ declare const ExampleJob1: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
22
+ [evt: string]: CustomEvent<any>;
23
+ }, {}, {}, string>;
24
+ type ExampleJob1 = InstanceType<typeof ExampleJob1>;
25
+ export default ExampleJob1;
26
+ //# sourceMappingURL=ExampleJob1.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExampleJob1.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/experience/ExampleJob1.svelte.ts"],"names":[],"mappings":"AAKC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAEnG,QAAA,MAAM,GAAG,qCAAqC,CAAC;AAC/C,QAAA,MAAM,WAAW,eAAe,CAAC;AACjC,QAAA,MAAM,YAAY,eAAe,CAAC;AAClC,QAAA,MAAM,IAAI,UAAkC,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACzD,QAAA,MAAM,SAAS,GAAyB,OAAO,qBAAqB,KAAqB,UAAU,CAAC,OAAO,QAAQ,EAAE,OAAO,CAyBlG,CAAC;AAe9B,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,WAAW;;kBAA+E,CAAC;AAC/E,KAAK,WAAW,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,eAAe,WAAW,CAAC"}
@@ -0,0 +1,74 @@
1
+ <!-- TODO: Documentation: consider documentation showcase -->
2
+
3
+ <script module lang="ts">
4
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
5
+ import { default as FourPartCard } from "../../components/FourPartCard.svelte";
6
+ import { TextChip } from "../../elements/TextChip";
7
+
8
+ const key = "Senior Developer at Current Company";
9
+ const dateStarted = "2024-01-01";
10
+ // No dateFinished export - indicates ongoing position
11
+ // qt-ongoing, qt-systems, qt-performance, qt-infrastructure
12
+ const tags = ["ongoing", "rust", "systems", "performance", "infrastructure"];
13
+ export { component, key, dateStarted, tags };
14
+ </script>
15
+
16
+ {#snippet component(props: ProjectComponentProps)}
17
+ <FourPartCard>
18
+ {#snippet headerCover()}
19
+ <div class="company-logo-placeholder">
20
+ <h1>CC</h1>
21
+ </div>
22
+ {/snippet}
23
+
24
+ {#snippet header()}
25
+ <h3>Senior Developer</h3>
26
+ <h4>Current Company</h4>
27
+ <p class="date-range">Jan 2024 - Present</p>
28
+ {/snippet}
29
+
30
+ <p>
31
+ Currently working on high-performance systems using
32
+ <span class="qt-rust">Rust</span>.
33
+ Leading development of critical infrastructure components and mentoring junior developers to preach our love of
34
+ <span class="qt-rust">Rust</span>. Did I forget to mention <span class="qt-rust">RUST</span>?!?!
35
+ </p>
36
+
37
+ <div class="text-chip-container">
38
+ {#each tags as t (t)}
39
+ <TextChip queryClass="qt-{t}">{t}</TextChip>
40
+ {/each}
41
+ </div>
42
+ </FourPartCard>
43
+ {/snippet}
44
+
45
+ <style>
46
+ .company-logo-placeholder {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ width: 100%;
51
+ height: 100%;
52
+ min-height: 150px;
53
+ background: linear-gradient(135deg, var(--color-secondary-500), var(--color-tertiary-500));
54
+ color: white;
55
+ font-size: 2rem;
56
+ font-weight: bold;
57
+ }
58
+
59
+ .date-range {
60
+ font-size: 0.875rem;
61
+ color: var(--color-text-secondary);
62
+ margin-bottom: 0.5rem;
63
+ }
64
+
65
+ h4 {
66
+ margin-top: 0.25rem;
67
+ margin-bottom: 0.5rem;
68
+ color: var(--color-text-secondary);
69
+ }
70
+
71
+ .ongoing-badge {
72
+ margin-top: 0.5rem;
73
+ }
74
+ </style>
@@ -0,0 +1,25 @@
1
+ import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
+ declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
3
+ declare const key = "Senior Developer at Current Company";
4
+ declare const dateStarted = "2024-01-01";
5
+ declare const tags: string[];
6
+ export { component, key, dateStarted, tags };
7
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
8
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
9
+ $$bindings?: Bindings;
10
+ } & Exports;
11
+ (internal: unknown, props: {
12
+ $$events?: Events;
13
+ $$slots?: Slots;
14
+ }): Exports & {
15
+ $set?: any;
16
+ $on?: any;
17
+ };
18
+ z_$$bindings?: Bindings;
19
+ }
20
+ declare const ExampleJob2: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
21
+ [evt: string]: CustomEvent<any>;
22
+ }, {}, {}, string>;
23
+ type ExampleJob2 = InstanceType<typeof ExampleJob2>;
24
+ export default ExampleJob2;
25
+ //# sourceMappingURL=ExampleJob2.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExampleJob2.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/experience/ExampleJob2.svelte.ts"],"names":[],"mappings":"AAGC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAGnG,QAAA,MAAM,SAAS,GAAyB,OAAO,qBAAqB,KAAqB,UAAU,CAAC,OAAO,QAAQ,EAAE,OAAO,CA2BhG,CAAC;AAE7B,QAAA,MAAM,GAAG,wCAAwC,CAAC;AAClD,QAAA,MAAM,WAAW,eAAe,CAAC;AAGjC,QAAA,MAAM,IAAI,UAAkE,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAW9C,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,WAAW;;kBAA+E,CAAC;AAC/E,KAAK,WAAW,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AACtD,eAAe,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * as ExampleJob1 from './ExampleJob1.svelte';
2
+ export * as ExampleJob2 from './ExampleJob2.svelte';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/experience/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,WAAW,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * as ExampleJob1 from './ExampleJob1.svelte';
2
+ export * as ExampleJob2 from './ExampleJob2.svelte';
@@ -16,16 +16,15 @@
16
16
  { label: "Tagalog", value: "tl" }
17
17
  ];
18
18
 
19
- let selectedCountry = $state(getLocale());
19
+ let selectedCountry = $state([getLocale()]);
20
20
 
21
- const onValueChange = (e: { value: ComboxData["value"] | undefined }) => {
22
- if (!e.value) return;
21
+ const onValueChange = (e: ComboxData["value"][] | undefined) => {
22
+ if (!e || e.length === 0) return;
23
23
 
24
- const data = comboboxData.find((d) => d.value === e.value);
25
- if (data) {
26
- selectedCountry = data.value;
24
+ const data = comboboxData.filter(v => e.includes(v.value));
25
+ if (data && data.length > 0) {
27
26
  const pathname = deLocalizeHref(location.href);
28
- location.href = localizeHref(pathname, { locale: data.value });
27
+ location.href = localizeHref(pathname, { locale: data[0].value });
29
28
  }
30
29
  };
31
30
 
@@ -34,8 +33,7 @@
34
33
 
35
34
  <PinyaCombobox
36
35
  data={comboboxData}
37
- value={selectedCountry}
38
- defaultValue={selectedCountry}
36
+ bind:value={selectedCountry}
39
37
  label="Select Language"
40
38
  placeholder="Select Language"
41
39
  {onValueChange}
@@ -1 +1 @@
1
- {"version":3,"file":"LanguagePicker.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/ui/modules/modals/general-settings/LanguagePicker.svelte.ts"],"names":[],"mappings":"AA6CA,QAAA,MAAM,cAAc,2DAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"LanguagePicker.svelte.d.ts","sourceRoot":"","sources":["../../../../../src/lib/ui/modules/modals/general-settings/LanguagePicker.svelte.ts"],"names":[],"mappings":"AA4CA,QAAA,MAAM,cAAc,2DAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -3,6 +3,7 @@
3
3
  <script module lang="ts">
4
4
  import HeaderHepCat from "../../../assets/temp/header-hep-cat.mp4";
5
5
  import BitbucketIcon from "../../../assets/icons/bitbucket-icon.svg";
6
+ import ProjectDateBadge from "../../components/project-date-badge/ProjectDateBadge.svelte";
6
7
  import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
7
8
  import { default as FourPartCard } from "../../components/FourPartCard.svelte";
8
9
  import { default as ImageIcon } from "../../elements/ImageIcon.svelte";
@@ -11,7 +12,12 @@
11
12
  import { ButtonVariant } from "../../elements/PinyaButtonCommon/ButtonVariant";
12
13
 
13
14
  const key = "Hepcat";
14
- export { component, key };
15
+ const dateStarted = "2020-01-01";
16
+ const dateFinished = "2020-04-15";
17
+ const priority = 100;
18
+ const tags = ["unity", "csharp", "game", "rhythm", "rpgmaker"];
19
+ // type SnippetMeta at src/lib/ui/templates/SeaweedLayout/props.ts:6
20
+ export { component, key, dateStarted, dateFinished, tags, priority };
15
21
  </script>
16
22
 
17
23
  {#snippet component(props: ProjectComponentProps)}
@@ -48,6 +54,13 @@
48
54
  files.
49
55
  </p>
50
56
 
57
+ <ProjectDateBadge
58
+ dateStarted={props.snippetMeta?.dateStarted}
59
+ dateFinished={props.snippetMeta?.dateFinished}
60
+ isOngoing={props.snippetMeta?.tags?.includes("ongoing") ?? false}
61
+ commitCount={props.snippetMeta?.commitCount}
62
+ gitRepoLink={props.snippetMeta?.gitRepoLink}
63
+ />
51
64
 
52
65
  <section class="game-link-section">
53
66
  <PinyaButton
@@ -63,6 +76,7 @@
63
76
  <ImageIcon alt="itch.io icon" src={ItchLogoHotLink}></ImageIcon>
64
77
  </PinyaButton>
65
78
  </section>
79
+
66
80
  </FourPartCard>
67
81
  {/snippet}
68
82
 
@@ -1,7 +1,11 @@
1
1
  import type { ProjectComponentProps } from "../../templates/SeaweedLayout/ProjectComponentProps";
2
2
  declare const component: (props: ProjectComponentProps) => ReturnType<import("svelte").Snippet>;
3
3
  declare const key = "Hepcat";
4
- export { component, key };
4
+ declare const dateStarted = "2020-01-01";
5
+ declare const dateFinished = "2020-04-15";
6
+ declare const priority = 100;
7
+ declare const tags: string[];
8
+ export { component, key, dateStarted, dateFinished, tags, priority };
5
9
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
6
10
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
7
11
  $$bindings?: Bindings;
@@ -1 +1 @@
1
- {"version":3,"file":"Hepcat.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/projects/Hepcat.svelte.ts"],"names":[],"mappings":"AAKC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAMnG,QAAA,MAAM,SAAS,GAAyB,OAAO,qBAAqB,KAAqB,UAAU,CAAC,OAAO,QAAQ,EAAE,OAAO,CAwChG,CAAC;AAE7B,QAAA,MAAM,GAAG,WAAW,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAY3B,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,MAAM;;kBAA+E,CAAC;AAC1E,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Hepcat.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/ui/modules/projects/Hepcat.svelte.ts"],"names":[],"mappings":"AAMC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAMnG,QAAA,MAAM,SAAS,GAAyB,OAAO,qBAAqB,KAAqB,UAAU,CAAC,OAAO,QAAQ,EAAE,OAAO,CA0ChG,CAAC;AAE7B,QAAA,MAAM,GAAG,WAAW,CAAC;AACrB,QAAA,MAAM,WAAW,eAAe,CAAC;AACjC,QAAA,MAAM,YAAY,eAAe,CAAC;AAClC,QAAA,MAAM,QAAQ,MAAM,CAAC;AACrB,QAAA,MAAM,IAAI,UAAoD,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAYtE,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,MAAM;;kBAA+E,CAAC;AAC1E,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,eAAe,MAAM,CAAC"}