@invopop/popui 0.1.3 → 0.1.4-beta.2

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 (180) hide show
  1. package/dist/AlertDialog.svelte +10 -11
  2. package/dist/BaseButton.svelte +29 -104
  3. package/dist/BaseCard.svelte +35 -30
  4. package/dist/BaseCounter.svelte +11 -8
  5. package/dist/BaseDropdown.svelte +5 -5
  6. package/dist/BaseFlag.svelte +5 -3
  7. package/dist/BaseFlag.svelte.d.ts +1 -0
  8. package/dist/BaseTable.svelte +16 -16
  9. package/dist/BaseTable.svelte.d.ts +1 -1
  10. package/dist/BaseTableActions.svelte +4 -6
  11. package/dist/BaseTableCellContent.svelte +9 -21
  12. package/dist/BaseTableCheckbox.svelte +9 -11
  13. package/dist/BaseTableHeaderContent.svelte +4 -4
  14. package/dist/BaseTableHeaderOrderBy.svelte +23 -12
  15. package/dist/BaseTableRow.svelte +12 -10
  16. package/dist/Breadcrumb.svelte +40 -0
  17. package/dist/Breadcrumb.svelte.d.ts +4 -0
  18. package/dist/Breadcrumbs.svelte +5 -30
  19. package/dist/ButtonFile.svelte +40 -30
  20. package/dist/ButtonUuidCopy.svelte +6 -3
  21. package/dist/CardCheckbox.svelte +45 -32
  22. package/dist/CardCheckbox.svelte.d.ts +1 -1
  23. package/dist/CardRelation.svelte +12 -13
  24. package/dist/CompanySelector.svelte +35 -7
  25. package/dist/CounterWidget.svelte +52 -0
  26. package/dist/CounterWidget.svelte.d.ts +4 -0
  27. package/dist/DataListItem.svelte +14 -10
  28. package/dist/DatePicker.svelte +20 -17
  29. package/dist/DrawerContext.svelte +207 -15
  30. package/dist/DrawerContextItem.svelte +50 -50
  31. package/dist/DrawerContextSeparator.svelte +1 -1
  32. package/dist/DropdownSelect.svelte +81 -22
  33. package/dist/DropdownSelectGroup.svelte +15 -0
  34. package/dist/DropdownSelectGroup.svelte.d.ts +7 -0
  35. package/dist/EmptyState.svelte +42 -0
  36. package/dist/EmptyState.svelte.d.ts +4 -0
  37. package/dist/FeedEvents.svelte +9 -5
  38. package/dist/FeedIconEvent.svelte +2 -2
  39. package/dist/FeedIconStatus.svelte +4 -4
  40. package/dist/FeedItem.svelte +10 -11
  41. package/dist/FeedItemDetail.svelte +32 -6
  42. package/dist/FeedViewer.svelte +1 -1
  43. package/dist/GlobalSearch.svelte +13 -12
  44. package/dist/InputCheckbox.svelte +2 -5
  45. package/dist/InputError.svelte +4 -9
  46. package/dist/InputLabel.svelte +3 -1
  47. package/dist/InputRadio.svelte +29 -13
  48. package/dist/InputRadio.svelte.d.ts +1 -1
  49. package/dist/InputSearch.svelte +8 -8
  50. package/dist/InputSelect.svelte +32 -31
  51. package/dist/InputText.svelte +32 -24
  52. package/dist/InputTextarea.svelte +25 -19
  53. package/dist/InputToggle.svelte +24 -18
  54. package/dist/MenuItem.svelte +16 -11
  55. package/dist/MenuItemCollapsible.svelte +7 -7
  56. package/dist/Notification.svelte +60 -25
  57. package/dist/ProfileAvatar.svelte +43 -14
  58. package/dist/ProgressBar.svelte +42 -0
  59. package/dist/ProgressBar.svelte.d.ts +4 -0
  60. package/dist/ProgressBarCircle.svelte +46 -0
  61. package/dist/ProgressBarCircle.svelte.d.ts +4 -0
  62. package/dist/SeparatorHorizontal.svelte +2 -2
  63. package/dist/ShortcutWrapper.svelte +14 -5
  64. package/dist/StatusLabel.svelte +4 -5
  65. package/dist/StepIconList.svelte +11 -9
  66. package/dist/TagBeta.svelte +26 -14
  67. package/dist/TagProgress.svelte +28 -0
  68. package/dist/TagProgress.svelte.d.ts +4 -0
  69. package/dist/TagSearch.svelte +4 -4
  70. package/dist/TagStatus.svelte +32 -34
  71. package/dist/TitleMain.svelte +1 -1
  72. package/dist/TitleSection.svelte +1 -1
  73. package/dist/UuidCopy.svelte +4 -4
  74. package/dist/alert-dialog/alert-dialog-action.svelte +8 -4
  75. package/dist/alert-dialog/alert-dialog-cancel.svelte +7 -3
  76. package/dist/alert-dialog/alert-dialog-content.svelte +1 -1
  77. package/dist/alert-dialog/alert-dialog-description.svelte +1 -1
  78. package/dist/alert-dialog/alert-dialog-footer.svelte +1 -1
  79. package/dist/alert-dialog/alert-dialog-header.svelte +1 -1
  80. package/dist/alert-dialog/alert-dialog-overlay.svelte +1 -1
  81. package/dist/alert-dialog/alert-dialog-title.svelte +1 -1
  82. package/dist/alert-dialog/alert-dialog-trigger.svelte +4 -2
  83. package/dist/button/button.svelte +224 -24
  84. package/dist/button/button.svelte.d.ts +77 -26
  85. package/dist/clickOutside.d.ts +5 -2
  86. package/dist/clickOutside.js +9 -3
  87. package/dist/data-table/cells/boolean-cell.svelte +16 -0
  88. package/dist/data-table/cells/boolean-cell.svelte.d.ts +8 -0
  89. package/dist/data-table/cells/currency-cell.svelte +10 -0
  90. package/dist/data-table/cells/currency-cell.svelte.d.ts +8 -0
  91. package/dist/data-table/cells/date-cell.svelte +10 -0
  92. package/dist/data-table/cells/date-cell.svelte.d.ts +8 -0
  93. package/dist/data-table/cells/tag-cell.svelte +12 -0
  94. package/dist/data-table/cells/tag-cell.svelte.d.ts +8 -0
  95. package/dist/data-table/cells/text-cell.svelte +10 -0
  96. package/dist/data-table/cells/text-cell.svelte.d.ts +8 -0
  97. package/dist/data-table/column-definitions.d.ts +12 -0
  98. package/dist/data-table/column-definitions.js +42 -0
  99. package/dist/data-table/column-sizing-helpers.d.ts +6 -0
  100. package/dist/data-table/column-sizing-helpers.js +24 -0
  101. package/dist/data-table/create-columns.d.ts +3 -0
  102. package/dist/data-table/create-columns.js +50 -0
  103. package/dist/data-table/data-table-pagination.svelte +173 -0
  104. package/dist/data-table/data-table-pagination.svelte.d.ts +4 -0
  105. package/dist/data-table/data-table-svelte.svelte.d.ts +40 -0
  106. package/dist/data-table/data-table-svelte.svelte.js +111 -0
  107. package/dist/data-table/data-table-toolbar.svelte +16 -0
  108. package/dist/data-table/data-table-toolbar.svelte.d.ts +29 -0
  109. package/dist/data-table/data-table-types.d.ts +75 -0
  110. package/dist/data-table/data-table-types.js +1 -0
  111. package/dist/data-table/data-table-view-options.svelte +88 -0
  112. package/dist/data-table/data-table-view-options.svelte.d.ts +27 -0
  113. package/dist/data-table/data-table.svelte +323 -0
  114. package/dist/data-table/data-table.svelte.d.ts +25 -0
  115. package/dist/data-table/flex-render.svelte +40 -0
  116. package/dist/data-table/flex-render.svelte.d.ts +33 -0
  117. package/dist/data-table/index.d.ts +13 -0
  118. package/dist/data-table/index.js +13 -0
  119. package/dist/data-table/render-helpers.d.ts +90 -0
  120. package/dist/data-table/render-helpers.js +99 -0
  121. package/dist/data-table/table-setup.d.ts +36 -0
  122. package/dist/data-table/table-setup.js +130 -0
  123. package/dist/data-table/table-styles.d.ts +17 -0
  124. package/dist/data-table/table-styles.js +49 -0
  125. package/dist/helpers.d.ts +1 -0
  126. package/dist/helpers.js +3 -0
  127. package/dist/index.d.ts +16 -7
  128. package/dist/index.js +33 -14
  129. package/dist/range-calendar/range-calendar-cell.svelte +1 -1
  130. package/dist/range-calendar/range-calendar-day.svelte +11 -12
  131. package/dist/range-calendar/range-calendar-head-cell.svelte +1 -1
  132. package/dist/range-calendar/range-calendar-header.svelte +1 -1
  133. package/dist/range-calendar/range-calendar-month-select.svelte +1 -1
  134. package/dist/range-calendar/range-calendar-next-button.svelte +3 -3
  135. package/dist/range-calendar/range-calendar-prev-button.svelte +3 -3
  136. package/dist/range-calendar/range-calendar.svelte +1 -1
  137. package/dist/sonner/index.d.ts +1 -0
  138. package/dist/sonner/index.js +1 -0
  139. package/dist/sonner/sonner.svelte +44 -0
  140. package/dist/sonner/sonner.svelte.d.ts +4 -0
  141. package/dist/svg/CheckBadge.svelte +18 -0
  142. package/dist/svg/CheckBadge.svelte.d.ts +26 -0
  143. package/dist/svg/IconDelivery.svelte +86 -0
  144. package/dist/svg/IconDelivery.svelte.d.ts +20 -0
  145. package/dist/svg/IconEmpty.svelte +113 -121
  146. package/dist/svg/IconOrder.svelte +81 -0
  147. package/dist/svg/IconOrder.svelte.d.ts +20 -0
  148. package/dist/svg/IconPayment.svelte +86 -0
  149. package/dist/svg/IconPayment.svelte.d.ts +20 -0
  150. package/dist/table/table-body.svelte +5 -1
  151. package/dist/table/table-cell.svelte +4 -2
  152. package/dist/table/table-footer.svelte +1 -1
  153. package/dist/table/table-head.svelte +4 -2
  154. package/dist/table/table-header.svelte +1 -1
  155. package/dist/table/table-row.svelte +4 -2
  156. package/dist/table/table.svelte +2 -2
  157. package/dist/tabs/tabs-list.svelte +8 -2
  158. package/dist/tabs/tabs-list.svelte.d.ts +4 -1
  159. package/dist/tabs/tabs-trigger.svelte +5 -3
  160. package/dist/tabs/tabs-trigger.svelte.d.ts +4 -1
  161. package/dist/tailwind.theme.css +998 -0
  162. package/dist/tooltip/tooltip-content.svelte +2 -2
  163. package/dist/types.d.ts +76 -50
  164. package/package.json +20 -10
  165. package/dist/CounterWorkflow.svelte +0 -19
  166. package/dist/CounterWorkflow.svelte.d.ts +0 -4
  167. package/dist/DrawerContextWorkspace.svelte +0 -126
  168. package/dist/DrawerContextWorkspace.svelte.d.ts +0 -4
  169. package/dist/EmptyStateIcon.svelte +0 -52
  170. package/dist/EmptyStateIcon.svelte.d.ts +0 -4
  171. package/dist/EmptyStateIllustration.svelte +0 -66
  172. package/dist/EmptyStateIllustration.svelte.d.ts +0 -4
  173. package/dist/FormLayoutModal.svelte +0 -14
  174. package/dist/FormLayoutModal.svelte.d.ts +0 -4
  175. package/dist/ProfileSelector.svelte +0 -41
  176. package/dist/ProfileSelector.svelte.d.ts +0 -4
  177. package/dist/SectionLayout.svelte +0 -13
  178. package/dist/SectionLayout.svelte.d.ts +0 -4
  179. package/dist/tw.theme.d.ts +0 -171
  180. package/dist/tw.theme.js +0 -188
@@ -20,7 +20,7 @@
20
20
  {sideOffset}
21
21
  {side}
22
22
  class={cn(
23
- 'bg-neutral-700 text-white-80 z-50 rounded-md px-3 py-2 text-base font-medium shadow-md',
23
+ 'bg-background-default-negative border border-border-inverse z-50 rounded-md px-2 py-1 text-sm font-medium text-foreground-inverse leading-5 tracking-tight shadow-md',
24
24
  className
25
25
  )}
26
26
  >
@@ -29,7 +29,7 @@
29
29
  {#snippet child({ props })}
30
30
  <div
31
31
  class={cn(
32
- 'bg-primary z-50 size-2.5 rotate-45 rounded-[2px]',
32
+ 'bg-background-default-negative z-50 size-2.5 rotate-45 rounded-[2px]',
33
33
  'data-[side=top]:translate-x-1/2 data-[side=top]:translate-y-[calc(-50%_+_2px)]',
34
34
  'data-[side=bottom]:-translate-x-1/2 data-[side=bottom]:-translate-y-[calc(-50%_+_1px)]',
35
35
  'data-[side=right]:translate-x-[calc(50%_+_2px)] data-[side=right]:translate-y-1/2',
package/dist/types.d.ts CHANGED
@@ -3,8 +3,8 @@ import type { IconSource } from '@steeze-ui/svelte-icon';
3
3
  import type { Snippet } from 'svelte';
4
4
  export type IconTheme = 'default' | 'solid' | 'mini';
5
5
  export type IconPosition = 'right' | 'left';
6
- export type ButtonVariant = 'default' | 'primary' | 'secondary' | 'warning' | 'danger' | 'dark' | 'outline';
7
- export type StatusType = 'grey' | 'green' | 'yellow' | 'red' | 'orange' | 'blue' | 'purple' | 'empty';
6
+ export type ButtonVariant = 'warning' | 'primary' | 'secondary' | 'danger' | 'dark' | 'outline' | 'ghost' | 'dark-ghost';
7
+ export type StatusType = 'grey' | 'green' | 'yellow' | 'red' | 'orange' | 'blue' | 'purple' | 'olive' | 'teal' | 'crimson' | 'blueViolet' | 'steelBlue' | 'empty';
8
8
  export type AnyProp = string | number | object | boolean;
9
9
  export type SidebarIcon = {
10
10
  path: string;
@@ -12,11 +12,18 @@ export type SidebarIcon = {
12
12
  title: string;
13
13
  iconTheme: IconTheme;
14
14
  };
15
- export type Status = 'success' | 'warning' | 'error';
15
+ export type Status = 'success' | 'warning' | 'error' | 'info' | 'neutral';
16
16
  export type SelectOption = {
17
17
  label: string;
18
18
  value: AnyProp;
19
19
  };
20
+ export type DrawerGroup = {
21
+ label: string;
22
+ slug: string;
23
+ emptyIcon?: IconSource;
24
+ emptyTitle?: string;
25
+ emptyDescription?: string;
26
+ };
20
27
  export type DrawerOption = SelectOption & {
21
28
  separator?: boolean;
22
29
  destructive?: boolean;
@@ -29,6 +36,10 @@ export type DrawerOption = SelectOption & {
29
36
  sandbox?: boolean;
30
37
  iconClass?: string;
31
38
  disabled?: boolean;
39
+ locked?: boolean;
40
+ groupBy?: string;
41
+ useAvatar?: boolean;
42
+ action?: Snippet<[DrawerOption]>;
32
43
  };
33
44
  export type Company = {
34
45
  id: string;
@@ -102,7 +113,6 @@ export type TabItem = {
102
113
  check?: boolean;
103
114
  warning?: boolean;
104
115
  };
105
- export type EmptyStateIcon = 'invoices' | 'contacts' | 'products' | 'pdf' | 'file' | 'no-results';
106
116
  export type DataListItem = {
107
117
  label: string;
108
118
  value: string;
@@ -153,12 +163,13 @@ export interface BaseButtonProps {
153
163
  type?: 'button' | 'submit' | 'reset' | null;
154
164
  variant?: ButtonVariant;
155
165
  disabled?: boolean;
156
- small?: boolean;
157
- big?: boolean;
166
+ size?: 'sm' | 'md' | 'lg';
158
167
  dangerIcon?: boolean;
159
168
  shortcut?: boolean;
160
169
  fullwidth?: boolean;
161
170
  notification?: boolean;
171
+ stackedLeft?: boolean;
172
+ stackedRight?: boolean;
162
173
  children?: Snippet;
163
174
  [key: string]: any;
164
175
  onclick?: (event: MouseEvent) => void;
@@ -169,14 +180,37 @@ export interface BaseCardProps {
169
180
  title?: string;
170
181
  description?: string;
171
182
  type?: 'default' | 'soon' | 'beta';
172
- enabled?: boolean;
173
183
  footer?: Snippet;
174
184
  [key: string]: any;
175
185
  onclick?: (event: MouseEvent) => void;
176
186
  }
177
187
  export interface BaseCounterProps {
178
- content: number;
179
- variant?: 'default' | 'light' | 'dark';
188
+ value: number;
189
+ theme?: 'light' | 'navigation' | 'accent';
190
+ }
191
+ export interface CounterWidgetProps {
192
+ label: string;
193
+ current: number;
194
+ total: number;
195
+ resetDate?: string;
196
+ icon?: IconSource;
197
+ allowOverage?: boolean;
198
+ }
199
+ export interface ProgressBarProps {
200
+ percentage?: number;
201
+ current?: number;
202
+ total?: number;
203
+ allowOverage?: boolean;
204
+ warningPercentage?: number;
205
+ }
206
+ export interface ProgressBarCircleProps {
207
+ progress: number;
208
+ size: number;
209
+ variant?: 'default' | 'dark';
210
+ }
211
+ export interface TagProgressProps {
212
+ progress: number;
213
+ variant?: 'default' | 'dark';
180
214
  }
181
215
  export interface BaseDropdownProps {
182
216
  isOpen?: boolean;
@@ -189,7 +223,6 @@ export interface BaseDropdownProps {
189
223
  }
190
224
  export interface BaseFlagProps {
191
225
  country?: string;
192
- width?: number;
193
226
  }
194
227
  export interface BaseTableProps {
195
228
  sortBy?: string;
@@ -248,6 +281,7 @@ export interface BaseTableHeaderOrderByProps {
248
281
  isActive?: boolean;
249
282
  sortDirection: TableSortBy;
250
283
  onOrderBy?: (direction: TableSortBy) => void;
284
+ onHide?: () => void;
251
285
  }
252
286
  export interface BaseTableRowProps {
253
287
  row: TableDataRow;
@@ -270,18 +304,24 @@ export interface BaseTableRowProps {
270
304
  action: AnyProp;
271
305
  }) => void;
272
306
  }
307
+ export interface BreadcrumbProps {
308
+ breadcrumb: Breadcrumb;
309
+ isLast: boolean;
310
+ oncopied?: (label: string) => void;
311
+ }
273
312
  export interface BreadcrumbsProps {
274
313
  breadcrumbs?: Breadcrumb[];
275
314
  oncopied?: (label: string) => void;
276
315
  }
316
+ export type ButtonFileType = 'pdf' | 'xml' | 'png' | 'generic';
277
317
  export interface ButtonFileProps {
278
- icon?: IconSource;
279
318
  name?: string;
280
319
  disabled?: boolean;
281
320
  date?: string;
282
- iconColor?: StatusType;
321
+ fileType?: ButtonFileType;
283
322
  onPreview?: () => void;
284
323
  onDownload?: () => void;
324
+ class?: string;
285
325
  [key: string]: any;
286
326
  }
287
327
  export interface ButtonUuidCopyProps {
@@ -299,6 +339,7 @@ export interface CardCheckboxProps {
299
339
  description?: string;
300
340
  accentText?: string;
301
341
  checked?: boolean;
342
+ disabled?: boolean;
302
343
  icon?: IconSource | undefined;
303
344
  hideRadio?: boolean;
304
345
  footer?: Snippet;
@@ -317,10 +358,6 @@ export interface CompanySelectorProps {
317
358
  onAdd?: () => void;
318
359
  onSelect?: (company: Company | null) => void;
319
360
  }
320
- export interface CounterWorkflowProps {
321
- content: number | string;
322
- variant?: 'default' | 'transparent';
323
- }
324
361
  export interface DataListItemProps {
325
362
  label?: string;
326
363
  value?: string;
@@ -342,24 +379,21 @@ export interface DatePickerProps {
342
379
  export interface DrawerContextProps {
343
380
  items?: DrawerOption[];
344
381
  multiple?: boolean;
345
- searchable?: boolean;
382
+ draggable?: boolean;
346
383
  widthClass?: string;
347
384
  onclick?: (value: AnyProp) => void;
348
385
  onselect?: (selected: DrawerOption[]) => void;
386
+ onreorder?: (items: DrawerOption[]) => void;
387
+ children?: Snippet;
388
+ groups?: DrawerGroup[];
349
389
  }
350
390
  export interface DrawerContextItemProps {
351
391
  multiple?: boolean;
352
392
  item: DrawerOption;
353
393
  scrollIfSelected?: boolean;
354
- workspace?: boolean;
355
394
  onclick?: (value: AnyProp) => void;
356
395
  onchange?: (item: DrawerOption) => void;
357
396
  }
358
- export interface DrawerContextWorkspaceProps {
359
- items?: DrawerOption[];
360
- multiple?: boolean;
361
- onclick?: (value: AnyProp) => void;
362
- }
363
397
  export interface DropdownSelectProps {
364
398
  value?: AnyProp;
365
399
  icon?: IconSource | string | undefined;
@@ -370,20 +404,18 @@ export interface DropdownSelectProps {
370
404
  fullWidth?: boolean;
371
405
  widthClass?: string;
372
406
  onSelect?: (value: AnyProp) => void;
407
+ stackLeft?: boolean;
408
+ stackRight?: boolean;
409
+ multipleLabel?: string;
373
410
  }
374
- export interface EmptyStateIconProps {
375
- icon?: IconSource | undefined;
411
+ export interface EmptyStateProps {
412
+ icon?: Snippet;
413
+ iconSource?: IconSource;
376
414
  title?: string;
377
415
  description?: string;
378
416
  check?: boolean;
379
417
  children?: Snippet;
380
418
  }
381
- export interface EmptyStateIllustrationProps {
382
- icon?: EmptyStateIcon | undefined;
383
- title?: string;
384
- description?: string;
385
- children?: Snippet;
386
- }
387
419
  export interface FeedEventsProps {
388
420
  events?: FeedEvent[];
389
421
  }
@@ -415,15 +447,13 @@ export interface FeedItemDetailProps {
415
447
  events?: FeedEvent[];
416
448
  idLabel?: string;
417
449
  onCopied?: (uuid: string) => void;
450
+ cancelable?: boolean;
451
+ onCancel?: () => void;
418
452
  }
419
453
  export interface FeedViewerProps {
420
454
  items?: FeedItemProps[];
421
455
  onView?: (slug: string) => void;
422
456
  }
423
- export interface FormLayoutModalProps {
424
- children?: Snippet;
425
- footer?: Snippet;
426
- }
427
457
  export interface GlobalSearchProps {
428
458
  collapsed?: boolean;
429
459
  onOpen?: () => void;
@@ -447,8 +477,10 @@ export interface InputLabelProps {
447
477
  }
448
478
  export interface InputRadioProps {
449
479
  checked?: boolean;
480
+ disabled?: boolean;
450
481
  id?: any;
451
482
  name?: string;
483
+ label?: string;
452
484
  onchange?: (checked: boolean) => void;
453
485
  [key: string]: any;
454
486
  }
@@ -509,6 +541,7 @@ export interface InputToggleProps {
509
541
  checked?: boolean;
510
542
  label?: string;
511
543
  onchange?: (checked: boolean) => void;
544
+ [key: string]: any;
512
545
  }
513
546
  export interface MenuItemProps {
514
547
  label?: string;
@@ -533,29 +566,19 @@ export interface MenuItemCollapsibleProps {
533
566
  children?: Snippet;
534
567
  }
535
568
  export interface NotificationProps {
536
- message?: string;
569
+ title?: string;
570
+ description?: string;
537
571
  type?: Status;
538
572
  children?: Snippet;
573
+ [key: string]: any;
539
574
  }
540
575
  export interface ProfileAvatarProps {
541
576
  name?: string;
542
- small?: boolean;
543
- large?: boolean;
577
+ variant?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
544
578
  dark?: boolean;
545
579
  picture?: string;
546
580
  country?: string;
547
- }
548
- export interface ProfileSelectorProps {
549
- name?: string;
550
- orgName?: string;
551
- picture?: string;
552
- collapsed?: boolean;
553
- isOpen?: boolean;
554
- onclick?: (event: MouseEvent) => void;
555
- }
556
- export interface SectionLayoutProps {
557
- title?: string;
558
- children?: Snippet;
581
+ icon?: IconSource;
559
582
  }
560
583
  export interface StatusLabelProps {
561
584
  status: FeedItemStatus;
@@ -563,6 +586,7 @@ export interface StatusLabelProps {
563
586
  }
564
587
  export interface StepIconListProps {
565
588
  icons?: StepIcon[];
589
+ [key: string]: any;
566
590
  }
567
591
  export interface TagSearchProps {
568
592
  label?: string;
@@ -584,6 +608,8 @@ export interface TitleSectionProps {
584
608
  children?: Snippet;
585
609
  }
586
610
  export interface ShortcutWrapperProps {
611
+ size?: 'sm' | 'md';
612
+ theme?: 'light' | 'navigation';
587
613
  children?: Snippet;
588
614
  }
589
615
  export interface UuidCopyProps {
package/package.json CHANGED
@@ -1,23 +1,26 @@
1
1
  {
2
2
  "name": "@invopop/popui",
3
3
  "license": "MIT",
4
- "version": "0.1.3",
4
+ "version": "0.1.4-beta.2",
5
+ "repository": {
6
+ "url": "https://github.com/invopop/popui"
7
+ },
5
8
  "scripts": {
6
9
  "dev": "vite dev",
10
+ "dev:clean": "npm run clean && vite dev",
11
+ "clean": "rm -rf .svelte-kit node_modules/.vite node_modules/.cache",
12
+ "clean:ts": "rm -rf .svelte-kit/tsconfig.json .svelte-kit/types && svelte-kit sync",
7
13
  "build": "vite build && npm run package",
8
14
  "preview": "vite preview",
9
15
  "package": "svelte-kit sync && svelte-package && publint",
10
16
  "prepublishOnly": "npm run package",
11
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
17
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.check.json",
12
18
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
13
19
  "test": "vitest",
14
20
  "lint": "prettier --plugin-search-dir . --check . && eslint .",
15
21
  "format": "prettier --plugin-search-dir . --write .",
16
22
  "storybook": "storybook dev -p 6006",
17
- "build-storybook": "storybook build",
18
- "build:tailwind": "tailwindcss -i ../styles.css -o ./dist/popui.css --minify",
19
- "build-web-components": "vite build --config vite.wbc.config.ts",
20
- "publish-wbc": "npm run build-web-components && cp ./package-wbc.json ./dist/package.json && cd ./dist && npm run publish"
23
+ "build-storybook": "storybook build"
21
24
  },
22
25
  "exports": {
23
26
  ".": {
@@ -28,7 +31,7 @@
28
31
  "types": "./dist/types.d.ts",
29
32
  "default": "./dist/types.d.ts"
30
33
  },
31
- "./twTheme.js": "./dist/tw.theme.js",
34
+ "./tailwind.theme.css": "./dist/tailwind.theme.css",
32
35
  "./package.json": "./dist/package.json"
33
36
  },
34
37
  "files": [
@@ -52,6 +55,7 @@
52
55
  "@tailwindcss/forms": "^0.5.9",
53
56
  "@tailwindcss/typography": "^0.5.15",
54
57
  "@types/lodash-es": "^4.17.12",
58
+ "@types/sortablejs": "^1.15.9",
55
59
  "@typescript-eslint/eslint-plugin": "^6.0.0",
56
60
  "@typescript-eslint/parser": "^6.0.0",
57
61
  "eslint": "^8.28.0",
@@ -67,7 +71,6 @@
67
71
  "storybook": "^9.1.3",
68
72
  "svelte": "^5.0.0",
69
73
  "svelte-check": "^4.0.0",
70
- "svelte-headlessui": "^0.0.32",
71
74
  "tailwind-merge": "^3.0.2",
72
75
  "tailwindcss": "^4.1.13",
73
76
  "tslib": "^2.4.1",
@@ -80,23 +83,30 @@
80
83
  "type": "module",
81
84
  "dependencies": {
82
85
  "@floating-ui/core": "^1.5.1",
83
- "@invopop/ui-icons": "0.0.67",
86
+ "@invopop/ui-icons": "^0.0.76",
84
87
  "@steeze-ui/heroicons": "^2.2.3",
85
88
  "@steeze-ui/svelte-icon": "^1.6.2",
86
89
  "@tailwindcss/vite": "^4.1.12",
90
+ "@tanstack/table-core": "^8.21.3",
87
91
  "@types/flatpickr": "^3.1.2",
88
92
  "bits-ui": "^2.9.4",
89
93
  "clsx": "^2.0.0",
90
94
  "date-fns": "^2.30.0",
91
95
  "dayjs": "^1.11.10",
96
+ "flag-icons": "^7.5.0",
92
97
  "flatpickr": "^4.6.13",
93
98
  "inter-ui": "^3.19.3",
94
99
  "lodash-es": "^4.17.21",
100
+ "mode-watcher": "^1.1.0",
101
+ "sortablejs": "^1.15.6",
95
102
  "svelte-floating-ui": "^1.5.8",
103
+ "svelte-headlessui": "^0.0.46",
96
104
  "svelte-intersection-observer-action": "^0.0.4",
97
105
  "svelte-portal": "^2.2.1",
106
+ "svelte-sonner": "^1.0.5",
98
107
  "svelte-transition": "^0.0.17",
99
108
  "svelte-viewport-info": "^1.0.2",
100
- "tailwind-variants": "^1.0.0"
109
+ "tailwind-variants": "^1.0.0",
110
+ "zod": "^4.3.5"
101
111
  }
102
112
  }
@@ -1,19 +0,0 @@
1
- <script lang="ts">
2
- import clsx from 'clsx'
3
- import type { CounterWorkflowProps } from './types'
4
-
5
- let { content, variant = 'default' }: CounterWorkflowProps = $props()
6
-
7
- let styles = $derived(
8
- clsx({
9
- 'bg-white rounded-md': variant === 'default',
10
- rounded: variant === 'transparent'
11
- })
12
- )
13
- </script>
14
-
15
- <div
16
- class="{styles} border border-neutral-200 inline-flex items-center justify-center p-[3px] text-neutral-500 text-sm font-medium h-5 min-w-[20px] tracking-wide tabular-nums slashed-zero lining-nums"
17
- >
18
- {content}
19
- </div>
@@ -1,4 +0,0 @@
1
- import type { CounterWorkflowProps } from './types';
2
- declare const CounterWorkflow: import("svelte").Component<CounterWorkflowProps, {}, "">;
3
- type CounterWorkflow = ReturnType<typeof CounterWorkflow>;
4
- export default CounterWorkflow;
@@ -1,126 +0,0 @@
1
- <script lang="ts">
2
- import type { DrawerContextWorkspaceProps } from './types.ts'
3
- import DrawerContextItem from './DrawerContextItem.svelte'
4
- import { Icon } from '@steeze-ui/svelte-icon'
5
- import { AddCircle, ExternalLink, Workspace } from '@invopop/ui-icons'
6
- import BaseCounter from './BaseCounter.svelte'
7
- import EmptyStateIcon from './EmptyStateIcon.svelte'
8
- import { slide } from 'svelte/transition'
9
- import { ChevronRight } from '@steeze-ui/heroicons'
10
-
11
- let { items = [], multiple = false, onclick }: DrawerContextWorkspaceProps = $props()
12
- let liveOpen = $state(false)
13
- let sandboxOpen = $state(false)
14
- let liveItems = $derived(items.filter((i) => !i.sandbox))
15
- let sandboxItems = $derived(items.filter((i) => i.sandbox))
16
- let selectedItem = $derived(items.find((i) => i.selected))
17
-
18
- $effect(() => {
19
- if (selectedItem) {
20
- if (selectedItem.sandbox) {
21
- sandboxOpen = true
22
- } else {
23
- liveOpen = true
24
- }
25
- }
26
- })
27
- </script>
28
-
29
- <div class="w-[300px] border border-neutral-200 rounded-md shadow-lg bg-white">
30
- <div class="max-h-[550px] overflow-hidden rounded-t-md">
31
- <button
32
- class="flex items-center justify-between bg-neutral-50 border-b border-neutral-200 rounded-t-sm h-9 py-2 pl-2.5 pr-3 text-base font-medium text-neutral-800 w-full"
33
- onclick={() => {
34
- if (liveOpen) return
35
- liveOpen = true
36
- sandboxOpen = false
37
- }}
38
- >
39
- <div class="flex items-center space-x-1.5">
40
- <Icon
41
- src={ChevronRight}
42
- class="h-4 w-4 text-neutral-500 transition-all transform {liveOpen ? 'rotate-90' : ''}"
43
- />
44
- <span>Live</span>
45
- </div>
46
- {#if liveItems.length}
47
- <BaseCounter content={liveItems.length} />
48
- {/if}
49
- </button>
50
- {#if liveOpen}
51
- <div transition:slide class="max-h-[475px] overflow-auto">
52
- {#if !liveItems.length}
53
- <div class="h-[182px] overflow-x-hidden">
54
- <EmptyStateIcon
55
- icon={Workspace}
56
- title="No workspaces here"
57
- description="Create a workspace to start"
58
- />
59
- </div>
60
- {/if}
61
- <ul class="p-1 space-y-1">
62
- {#each liveItems as item}
63
- <DrawerContextItem {item} {multiple} workspace {onclick} />
64
- {/each}
65
- </ul>
66
- </div>
67
- {/if}
68
- <button
69
- class="flex items-center justify-between bg-neutral-50 border-b border-neutral-200 h-9 py-2 pl-2.5 pr-3 text-base font-medium text-neutral-800 w-full"
70
- class:border-t={liveOpen}
71
- onclick={() => {
72
- if (sandboxOpen) return
73
- sandboxOpen = true
74
- liveOpen = false
75
- }}
76
- >
77
- <div class="flex items-center space-x-1.5">
78
- <Icon
79
- src={ChevronRight}
80
- class="h-4 w-4 text-neutral-500 transition-all transform {sandboxOpen ? 'rotate-90' : ''}"
81
- />
82
- <span>Sandbox</span>
83
- </div>
84
- {#if sandboxItems.length}
85
- <BaseCounter content={sandboxItems.length} />
86
- {/if}
87
- </button>
88
- {#if sandboxOpen}
89
- <div transition:slide class="max-h-[475px] overflow-auto">
90
- {#if !sandboxItems.length}
91
- <div class="h-[182px] overflow-x-hidden">
92
- <EmptyStateIcon
93
- icon={Workspace}
94
- title="No workspaces here"
95
- description="Create a workspace to start"
96
- />
97
- </div>
98
- {/if}
99
- <ul class="p-1 space-y-1">
100
- {#each sandboxItems as item}
101
- <DrawerContextItem {item} {multiple} workspace {onclick} />
102
- {/each}
103
- </ul>
104
- </div>
105
- {/if}
106
- </div>
107
-
108
- <ul class="px-1 space-y-1 bg-neutral-50 rounded-b border-t border-neutral-100 py-1">
109
- <li class="pl-1.5 py-1.5 pr-2 hover:bg-neutral-100 rounded-sm">
110
- <button
111
- class="flex items-center justify-between w-full"
112
- onclick={() => {
113
- onclick?.('add')
114
- }}
115
- >
116
- <div class="flex items-center space-x-1.5">
117
- <Icon src={AddCircle} class="w-4 h-4 text-neutral-800 flex-shrink-0" />
118
- <span class="text-neutral-800 tracking-tight text-base font-medium">Create workspace</span
119
- >
120
- </div>
121
-
122
- <Icon src={ExternalLink} class="w-5 h-5 text-neutral-800 flex-shrink-0" />
123
- </button>
124
- </li>
125
- </ul>
126
- </div>
@@ -1,4 +0,0 @@
1
- import type { DrawerContextWorkspaceProps } from './types.ts';
2
- declare const DrawerContextWorkspace: import("svelte").Component<DrawerContextWorkspaceProps, {}, "">;
3
- type DrawerContextWorkspace = ReturnType<typeof DrawerContextWorkspace>;
4
- export default DrawerContextWorkspace;
@@ -1,52 +0,0 @@
1
- <script lang="ts">
2
- import IconEmpty from './svg/IconEmpty.svelte'
3
- import { Icon } from '@steeze-ui/svelte-icon'
4
- import type { EmptyStateIconProps } from './types'
5
-
6
- let {
7
- icon = undefined,
8
- title = '',
9
- description = '',
10
- check = false,
11
- children
12
- }: EmptyStateIconProps = $props()
13
- </script>
14
-
15
- <div
16
- class="flex flex-col text-center items-center justify-center h-full font-sans gap-1"
17
- aria-label={title}
18
- >
19
- {#if icon}
20
- <div class="relative h-[120px] w-[352px] max-w-sm">
21
- <IconEmpty />
22
- <div class="absolute left-[50%] translate-x-[-50%] top-[50%] translate-y-[-50%]">
23
- <Icon src={icon} class="h-12 w-12 text-workspace-accent" />
24
- {#if check}
25
- <svg
26
- width="26"
27
- height="26"
28
- viewBox="0 0 26 26"
29
- fill="none"
30
- xmlns="http://www.w3.org/2000/svg"
31
- class="absolute top-[-16px] right-[-16px]"
32
- >
33
- <path
34
- d="M13 1C6.3835 1 1 6.3835 1 13C1 19.6165 6.3835 25 13 25C19.6165 25 25 19.6165 25 13C25 6.3835 19.6165 1 13 1Z"
35
- fill="#169958"
36
- />
37
- <circle cx="13" cy="13" r="10" stroke="white" stroke-opacity="0.4" stroke-width="0.6" />
38
- <path
39
- d="M18.1078 9.82205C15.7021 11.6837 13.6627 14.2538 12.0477 17.4584C11.8808 17.7912 11.5495 17.9999 11.1884 17.9999C10.83 18.004 10.4922 17.7885 10.3253 17.4517C9.58119 15.9471 8.7491 14.7239 7.78243 13.7123C7.40457 13.3176 7.40586 12.6764 7.78632 12.2831C8.16418 11.8898 8.78016 11.8898 9.15932 12.2871C9.90083 13.063 10.5699 13.9413 11.182 14.9435C12.7853 12.1888 14.7199 9.92443 16.9509 8.19887C17.3805 7.8675 17.9888 7.9591 18.3084 8.40766C18.628 8.85488 18.5387 9.48934 18.1078 9.82205Z"
40
- fill="white"
41
- />
42
- </svg>
43
- {/if}
44
- </div>
45
- </div>
46
- {/if}
47
- <div class="space-y-0.5">
48
- <h4 class="font-medium text-base text-neutral-800 tracking-tight">{title}</h4>
49
- <p class="max-w-xs text-base text-neutral-500 tracking-normal">{description}</p>
50
- <p>{@render children?.()}</p>
51
- </div>
52
- </div>
@@ -1,4 +0,0 @@
1
- import type { EmptyStateIconProps } from './types';
2
- declare const EmptyStateIcon: import("svelte").Component<EmptyStateIconProps, {}, "">;
3
- type EmptyStateIcon = ReturnType<typeof EmptyStateIcon>;
4
- export default EmptyStateIcon;