@fivem-nui/svelte-components 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +101 -2
  2. package/dist/components/actions/NuiButton.svelte +292 -0
  3. package/dist/components/actions/NuiButton.svelte.d.ts +60 -0
  4. package/dist/components/data/NuiBadge.svelte +277 -0
  5. package/dist/components/data/NuiBadge.svelte.d.ts +74 -0
  6. package/dist/components/data/NuiCodeBlock.svelte +256 -0
  7. package/dist/components/data/NuiCodeBlock.svelte.d.ts +49 -0
  8. package/dist/components/data/NuiList.svelte +341 -0
  9. package/dist/components/data/NuiList.svelte.d.ts +52 -0
  10. package/dist/components/data/NuiProgressBar.svelte +264 -0
  11. package/dist/components/data/NuiProgressBar.svelte.d.ts +51 -0
  12. package/dist/components/data/NuiRichText.svelte +260 -0
  13. package/dist/components/data/NuiRichText.svelte.d.ts +33 -0
  14. package/dist/components/data/NuiTable.svelte +470 -0
  15. package/dist/components/data/NuiTable.svelte.d.ts +53 -0
  16. package/dist/components/data/chart/NuiChart.svelte +384 -0
  17. package/dist/components/data/chart/NuiChart.svelte.d.ts +49 -0
  18. package/dist/components/data/chart/color.d.ts +9 -0
  19. package/dist/components/data/chart/color.js +78 -0
  20. package/dist/components/data/chart/index.d.ts +10 -0
  21. package/dist/components/data/chart/index.js +10 -0
  22. package/dist/components/data/chart/registry.d.ts +14 -0
  23. package/dist/components/data/chart/registry.js +53 -0
  24. package/dist/components/data/chart/renderers/bar.d.ts +8 -0
  25. package/dist/components/data/chart/renderers/bar.js +79 -0
  26. package/dist/components/data/chart/renderers/base.d.ts +18 -0
  27. package/dist/components/data/chart/renderers/base.js +10 -0
  28. package/dist/components/data/chart/renderers/line.d.ts +8 -0
  29. package/dist/components/data/chart/renderers/line.js +89 -0
  30. package/dist/components/data/chart/renderers/pie.d.ts +10 -0
  31. package/dist/components/data/chart/renderers/pie.js +55 -0
  32. package/dist/components/data/chart/scale.d.ts +22 -0
  33. package/dist/components/data/chart/scale.js +101 -0
  34. package/dist/components/data/chart/types.d.ts +84 -0
  35. package/dist/components/data/chart/types.js +1 -0
  36. package/dist/components/data/chart/validator.d.ts +10 -0
  37. package/dist/components/data/chart/validator.js +82 -0
  38. package/dist/components/forms/NuiCheckbox.svelte +218 -0
  39. package/dist/components/forms/NuiCheckbox.svelte.d.ts +37 -0
  40. package/dist/components/forms/NuiDatepicker.svelte +755 -0
  41. package/dist/components/forms/NuiDatepicker.svelte.d.ts +34 -0
  42. package/dist/components/forms/NuiFileInput.svelte +1047 -0
  43. package/dist/components/forms/NuiFileInput.svelte.d.ts +93 -0
  44. package/dist/components/forms/NuiFileInput.types.d.ts +28 -0
  45. package/dist/components/forms/NuiFileInput.types.js +1 -0
  46. package/dist/components/forms/NuiForm.svelte +391 -0
  47. package/dist/components/forms/NuiForm.svelte.d.ts +69 -0
  48. package/dist/components/forms/NuiInput.svelte +296 -0
  49. package/dist/components/forms/NuiInput.svelte.d.ts +62 -0
  50. package/dist/components/forms/NuiRadioGroup.svelte +238 -0
  51. package/dist/components/forms/NuiRadioGroup.svelte.d.ts +47 -0
  52. package/dist/components/forms/NuiSelect.svelte +819 -0
  53. package/dist/components/forms/NuiSelect.svelte.d.ts +49 -0
  54. package/dist/components/layout/NuiCard.svelte +314 -0
  55. package/dist/components/layout/NuiCard.svelte.d.ts +48 -0
  56. package/dist/components/layout/NuiCardGrid.svelte +98 -0
  57. package/dist/components/layout/NuiCardGrid.svelte.d.ts +22 -0
  58. package/dist/components/layout/NuiFlex.svelte +121 -0
  59. package/dist/components/layout/NuiFlex.svelte.d.ts +23 -0
  60. package/dist/components/layout/NuiGrid.svelte +66 -0
  61. package/dist/components/layout/NuiGrid.svelte.d.ts +14 -0
  62. package/dist/components/layout/NuiStack.svelte +138 -0
  63. package/dist/components/layout/NuiStack.svelte.d.ts +26 -0
  64. package/dist/components/navigation/NuiAccordion.svelte +323 -0
  65. package/dist/components/navigation/NuiAccordion.svelte.d.ts +38 -0
  66. package/dist/components/navigation/NuiBreadcrumbs.svelte +133 -0
  67. package/dist/components/navigation/NuiBreadcrumbs.svelte.d.ts +19 -0
  68. package/dist/components/navigation/NuiMenu.svelte +596 -0
  69. package/dist/components/navigation/NuiMenu.svelte.d.ts +28 -0
  70. package/dist/components/navigation/NuiPagination.svelte +306 -0
  71. package/dist/components/navigation/NuiPagination.svelte.d.ts +40 -0
  72. package/dist/components/navigation/NuiSidebar.svelte +186 -0
  73. package/dist/components/navigation/NuiSidebar.svelte.d.ts +26 -0
  74. package/dist/components/navigation/NuiTabs.svelte +249 -0
  75. package/dist/components/navigation/NuiTabs.svelte.d.ts +31 -0
  76. package/dist/components/overlay/NuiDialog.svelte +118 -0
  77. package/dist/components/overlay/NuiDialog.svelte.d.ts +34 -0
  78. package/dist/components/overlay/NuiModal.svelte +992 -0
  79. package/dist/components/overlay/NuiModal.svelte.d.ts +72 -0
  80. package/dist/components/overlay/NuiTooltip.svelte +159 -0
  81. package/dist/components/overlay/NuiTooltip.svelte.d.ts +13 -0
  82. package/dist/composables/useClickOutside.d.ts +43 -0
  83. package/dist/composables/useClickOutside.js +73 -0
  84. package/dist/composables/useFormValidation.d.ts +23 -0
  85. package/dist/composables/useFormValidation.js +72 -0
  86. package/dist/composables/useIdle.svelte.d.ts +18 -0
  87. package/dist/composables/useIdle.svelte.js +144 -0
  88. package/dist/composables/useKeyboardShortcut.svelte.d.ts +114 -0
  89. package/dist/composables/useKeyboardShortcut.svelte.js +153 -0
  90. package/dist/composables/useLocalStorage.svelte.d.ts +22 -0
  91. package/dist/composables/useLocalStorage.svelte.js +105 -0
  92. package/dist/composables/useMediaQuery.svelte.d.ts +51 -0
  93. package/dist/composables/useMediaQuery.svelte.js +80 -0
  94. package/dist/index.d.ts +46 -0
  95. package/dist/index.js +42 -0
  96. package/package.json +58 -3
  97. package/src/components/actions/NuiButton.svelte +292 -0
  98. package/src/components/data/NuiBadge.svelte +277 -0
  99. package/src/components/data/NuiCodeBlock.svelte +256 -0
  100. package/src/components/data/NuiList.svelte +341 -0
  101. package/src/components/data/NuiProgressBar.svelte +264 -0
  102. package/src/components/data/NuiRichText.svelte +260 -0
  103. package/src/components/data/NuiTable.svelte +470 -0
  104. package/src/components/data/chart/NuiChart.svelte +384 -0
  105. package/src/components/data/chart/color.ts +83 -0
  106. package/src/components/data/chart/index.ts +10 -0
  107. package/src/components/data/chart/registry.ts +71 -0
  108. package/src/components/data/chart/renderers/bar.ts +90 -0
  109. package/src/components/data/chart/renderers/base.ts +32 -0
  110. package/src/components/data/chart/renderers/line.ts +99 -0
  111. package/src/components/data/chart/renderers/pie.ts +66 -0
  112. package/src/components/data/chart/scale.ts +139 -0
  113. package/src/components/data/chart/types.ts +98 -0
  114. package/src/components/data/chart/validator.ts +98 -0
  115. package/src/components/forms/NuiCheckbox.svelte +218 -0
  116. package/src/components/forms/NuiDatepicker.svelte +755 -0
  117. package/src/components/forms/NuiFileInput.svelte +1047 -0
  118. package/src/components/forms/NuiFileInput.types.ts +29 -0
  119. package/src/components/forms/NuiForm.svelte +391 -0
  120. package/src/components/forms/NuiInput.svelte +296 -0
  121. package/src/components/forms/NuiRadioGroup.svelte +238 -0
  122. package/src/components/forms/NuiSelect.svelte +819 -0
  123. package/src/components/layout/NuiCard.svelte +314 -0
  124. package/src/components/layout/NuiCardGrid.svelte +98 -0
  125. package/src/components/layout/NuiFlex.svelte +121 -0
  126. package/src/components/layout/NuiGrid.svelte +66 -0
  127. package/src/components/layout/NuiStack.svelte +138 -0
  128. package/src/components/navigation/NuiAccordion.svelte +323 -0
  129. package/src/components/navigation/NuiBreadcrumbs.svelte +133 -0
  130. package/src/components/navigation/NuiMenu.svelte +596 -0
  131. package/src/components/navigation/NuiPagination.svelte +306 -0
  132. package/src/components/navigation/NuiSidebar.svelte +186 -0
  133. package/src/components/navigation/NuiTabs.svelte +249 -0
  134. package/src/components/overlay/NuiDialog.svelte +118 -0
  135. package/src/components/overlay/NuiModal.svelte +992 -0
  136. package/src/components/overlay/NuiTooltip.svelte +159 -0
  137. package/src/composables/useClickOutside.ts +132 -0
  138. package/src/composables/useFormValidation.ts +105 -0
  139. package/src/composables/useIdle.svelte.ts +191 -0
  140. package/src/composables/useKeyboardShortcut.svelte.ts +278 -0
  141. package/src/composables/useLocalStorage.svelte.ts +137 -0
  142. package/src/composables/useMediaQuery.svelte.ts +102 -0
  143. package/src/index.ts +66 -0
@@ -0,0 +1,133 @@
1
+ <script module lang="ts">
2
+ export interface Crumb {
3
+ label: string;
4
+ href?: string;
5
+ /** Marks the current page. When no crumb is active, the last one is treated as current */
6
+ active?: boolean;
7
+ }
8
+ </script>
9
+
10
+ <script lang="ts">
11
+ import type { HTMLAttributes } from "svelte/elements";
12
+
13
+ interface Props extends Omit<HTMLAttributes<HTMLElement>, "children"> {
14
+ crumbs: Crumb[];
15
+ /** When false, crumbs render as plain text instead of links */
16
+ clickable?: boolean;
17
+ /** Accessible name of the navigation landmark */
18
+ label?: string;
19
+ /** Called when link crumb is activated. Calling it suppresses native navigation */
20
+ onSelect?: (crumb: Crumb, index: number, event: MouseEvent) => void;
21
+ }
22
+
23
+ let {
24
+ crumbs,
25
+ clickable = true,
26
+ label = "Breadcrumb",
27
+ onSelect,
28
+ class: className = "",
29
+ ...rest
30
+ }: Props = $props();
31
+
32
+ const currentIndex = $derived.by(() => {
33
+ const explicit = crumbs.findIndex((c) => c.active);
34
+ return explicit !== -1 ? explicit : crumbs.length - 1;
35
+ });
36
+
37
+ function handleClick(event: MouseEvent, crumb: Crumb, index: number) {
38
+ if (!onSelect) return;
39
+ event.preventDefault();
40
+ onSelect(crumb, index, event);
41
+ }
42
+ </script>
43
+
44
+ <nav {...rest} class={["nui-breadcrumbs", className]} aria-label={label}>
45
+ <ol class="nui-breadcrumbs__list">
46
+ {#each crumbs as crumb, i (i)}
47
+ {@const isCurrent = i === currentIndex}
48
+ <li class="nui-breadcrumbs__item">
49
+ {#if crumb.href && clickable && !isCurrent}
50
+ <a
51
+ href={crumb.href}
52
+ class="nui-breadcrumbs__link"
53
+ onclick={(e) => handleClick(e, crumb, i)}
54
+ >
55
+ {crumb.label}
56
+ </a>
57
+ {:else}
58
+ <span
59
+ class="nui-breadcrumbs__crumb"
60
+ class:nui-breadcrumbs__crumb--active={isCurrent}
61
+ aria-current={isCurrent ? "page" : undefined}
62
+ >
63
+ {crumb.label}
64
+ </span>
65
+ {/if}
66
+ </li>
67
+ {/each}
68
+ </ol>
69
+ </nav>
70
+
71
+ <style>
72
+ .nui-breadcrumbs {
73
+ display: block;
74
+ }
75
+
76
+ .nui-breadcrumbs__list {
77
+ display: flex;
78
+ align-items: center;
79
+ flex-wrap: wrap;
80
+ gap: 0.5rem;
81
+ list-style: none;
82
+ margin: 0;
83
+ padding: 0;
84
+ font-size: 0.875rem;
85
+ }
86
+
87
+ .nui-breadcrumbs__item {
88
+ display: flex;
89
+ align-items: center;
90
+ min-width: 0;
91
+ }
92
+
93
+ /* Decorative separator: not in the DOM, not read by screen readers */
94
+ .nui-breadcrumbs__item + .nui-breadcrumbs__item::before {
95
+ content: "›";
96
+ color: var(--nui-border, #3f3f46);
97
+ margin: 0 0.5rem 0 0;
98
+ font-size: 0.75rem;
99
+ opacity: 0.7;
100
+ }
101
+
102
+ .nui-breadcrumbs__link {
103
+ color: var(--nui-fg-secondary, #8b8b99);
104
+ text-decoration: none;
105
+ transition: color 0.15s ease;
106
+ }
107
+
108
+ .nui-breadcrumbs__link:hover {
109
+ color: var(--nui-primary, #3b82f6);
110
+ text-decoration: underline;
111
+ }
112
+
113
+ .nui-breadcrumbs__link:focus-visible {
114
+ outline: 2px solid var(--nui-primary, #3b82f6);
115
+ outline-offset: 2px;
116
+ border-radius: 2px;
117
+ }
118
+
119
+ .nui-breadcrumbs__crumb {
120
+ color: var(--nui-fg-secondary, #8b8b99);
121
+ }
122
+
123
+ .nui-breadcrumbs__crumb--active {
124
+ color: var(--nui-fg, #fafafa);
125
+ font-weight: 500;
126
+ }
127
+
128
+ @media (prefers-reduced-motion: reduce) {
129
+ .nui-breadcrumbs__link {
130
+ transition: none;
131
+ }
132
+ }
133
+ </style>
@@ -0,0 +1,19 @@
1
+ export interface Crumb {
2
+ label: string;
3
+ href?: string;
4
+ /** Marks the current page. When no crumb is active, the last one is treated as current */
5
+ active?: boolean;
6
+ }
7
+ import type { HTMLAttributes } from "svelte/elements";
8
+ interface Props extends Omit<HTMLAttributes<HTMLElement>, "children"> {
9
+ crumbs: Crumb[];
10
+ /** When false, crumbs render as plain text instead of links */
11
+ clickable?: boolean;
12
+ /** Accessible name of the navigation landmark */
13
+ label?: string;
14
+ /** Called when link crumb is activated. Calling it suppresses native navigation */
15
+ onSelect?: (crumb: Crumb, index: number, event: MouseEvent) => void;
16
+ }
17
+ declare const NuiBreadcrumbs: import("svelte").Component<Props, {}, "">;
18
+ type NuiBreadcrumbs = ReturnType<typeof NuiBreadcrumbs>;
19
+ export default NuiBreadcrumbs;