@casinogate/ui 0.0.3 → 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 (216) hide show
  1. package/dist/app.d.ts +1 -1
  2. package/dist/app.html +9 -9
  3. package/dist/assets/css/root.css +585 -0
  4. package/dist/assets/css/theme.css +2 -0
  5. package/dist/components/button/button.stories.svelte +2 -2
  6. package/dist/components/checkbox/checkbox.stories.svelte +2 -2
  7. package/dist/components/checkbox/components/checkbox.root.svelte +2 -2
  8. package/dist/components/checkbox/index.js +1 -1
  9. package/dist/components/collapsible/collapsible.stories.svelte +2 -2
  10. package/dist/components/collapsible/components/collapsaible.svelte.js +1 -1
  11. package/dist/components/collapsible/components/collapsaible.trigger.svelte +2 -2
  12. package/dist/components/data-table/components/data-table.body.svelte +33 -0
  13. package/dist/components/data-table/components/data-table.body.svelte.d.ts +8 -0
  14. package/dist/components/data-table/components/data-table.cell.svelte +48 -0
  15. package/dist/components/data-table/components/data-table.cell.svelte.d.ts +10 -0
  16. package/dist/components/data-table/components/data-table.head.svelte +48 -0
  17. package/dist/components/data-table/components/data-table.head.svelte.d.ts +10 -0
  18. package/dist/components/data-table/components/data-table.header.svelte +41 -0
  19. package/dist/components/data-table/components/data-table.header.svelte.d.ts +7 -0
  20. package/dist/components/data-table/components/data-table.resize-handler.svelte +31 -0
  21. package/dist/components/data-table/components/data-table.resize-handler.svelte.d.ts +7 -0
  22. package/dist/components/data-table/components/data-table.root.svelte +55 -0
  23. package/dist/components/data-table/components/data-table.root.svelte.d.ts +34 -0
  24. package/dist/components/data-table/components/data-table.row.svelte +35 -0
  25. package/dist/components/data-table/components/data-table.row.svelte.d.ts +7 -0
  26. package/dist/components/data-table/components/data-table.sort-button.svelte +51 -0
  27. package/dist/components/data-table/components/data-table.sort-button.svelte.d.ts +7 -0
  28. package/dist/components/data-table/components/data-table.svelte.d.ts +139 -0
  29. package/dist/components/data-table/components/data-table.svelte.js +248 -0
  30. package/dist/components/data-table/components/data-table.table.svelte +33 -0
  31. package/dist/components/data-table/components/data-table.table.svelte.d.ts +8 -0
  32. package/dist/components/data-table/components/flex-render.svelte +32 -0
  33. package/dist/components/data-table/components/flex-render.svelte.d.ts +30 -0
  34. package/dist/components/data-table/data-table.stories.svelte +327 -0
  35. package/dist/components/data-table/data-table.stories.svelte.d.ts +4 -0
  36. package/dist/components/data-table/data-table.svelte +118 -0
  37. package/dist/components/data-table/data-table.svelte.d.ts +32 -0
  38. package/dist/components/data-table/index.js +26 -0
  39. package/dist/components/data-table/models/create-table.svelte.d.ts +19 -0
  40. package/dist/components/data-table/models/create-table.svelte.js +35 -0
  41. package/dist/components/data-table/models/index.d.ts +1 -0
  42. package/dist/components/data-table/models/index.js +1 -0
  43. package/dist/components/data-table/styles.d.ts +176 -0
  44. package/dist/components/data-table/styles.js +83 -0
  45. package/dist/components/data-table/types.d.ts +1 -0
  46. package/dist/components/data-table/types.js +1 -0
  47. package/dist/components/data-table/utils/index.d.ts +4 -0
  48. package/dist/components/data-table/utils/index.js +4 -0
  49. package/dist/components/data-table/utils/pagination-state.svelte.d.ts +10 -0
  50. package/dist/components/data-table/utils/pagination-state.svelte.js +26 -0
  51. package/dist/components/data-table/utils/render-helper.d.ts +90 -0
  52. package/dist/components/data-table/utils/render-helper.js +99 -0
  53. package/dist/components/data-table/utils/resize-state.svelte.d.ts +10 -0
  54. package/dist/components/data-table/utils/resize-state.svelte.js +23 -0
  55. package/dist/components/data-table/utils/row-models.d.ts +7 -0
  56. package/dist/components/data-table/utils/row-models.js +7 -0
  57. package/dist/components/data-table/utils/row-selection-state.svelte.d.ts +10 -0
  58. package/dist/components/data-table/utils/row-selection-state.svelte.js +23 -0
  59. package/dist/components/icons/caret-down.svelte +12 -0
  60. package/dist/components/icons/caret-down.svelte.d.ts +3 -0
  61. package/dist/components/icons/caret-up.svelte +12 -0
  62. package/dist/components/icons/caret-up.svelte.d.ts +3 -0
  63. package/dist/components/icons/check.svelte +12 -0
  64. package/dist/components/icons/check.svelte.d.ts +3 -0
  65. package/dist/components/icons/chevron-down.svelte +12 -0
  66. package/dist/components/icons/chevron-down.svelte.d.ts +3 -0
  67. package/dist/components/icons/chevron-left.svelte +12 -0
  68. package/dist/components/icons/chevron-left.svelte.d.ts +3 -0
  69. package/dist/components/icons/chevron-right.svelte +12 -0
  70. package/dist/components/icons/chevron-right.svelte.d.ts +3 -0
  71. package/dist/components/icons/chevron-small-down.svelte +14 -0
  72. package/dist/components/icons/chevron-small-down.svelte.d.ts +3 -0
  73. package/dist/components/icons/chevron-small-left.svelte +14 -0
  74. package/dist/components/icons/chevron-small-left.svelte.d.ts +3 -0
  75. package/dist/components/icons/chevron-small-right.svelte +14 -0
  76. package/dist/components/icons/chevron-small-right.svelte.d.ts +3 -0
  77. package/dist/components/icons/chevron-small-up.svelte +14 -0
  78. package/dist/components/icons/chevron-small-up.svelte.d.ts +3 -0
  79. package/dist/components/icons/chevron-up.svelte +12 -0
  80. package/dist/components/icons/chevron-up.svelte.d.ts +3 -0
  81. package/dist/components/icons/dots.svelte +20 -0
  82. package/dist/components/icons/dots.svelte.d.ts +3 -0
  83. package/dist/components/icons/error.svelte +12 -0
  84. package/dist/components/icons/error.svelte.d.ts +3 -0
  85. package/dist/components/icons/eye-crossed.svelte +14 -0
  86. package/dist/components/icons/eye-crossed.svelte.d.ts +3 -0
  87. package/dist/components/icons/eye.svelte +17 -0
  88. package/dist/components/icons/eye.svelte.d.ts +3 -0
  89. package/dist/components/icons/index.d.ts +22 -0
  90. package/dist/components/icons/index.js +21 -0
  91. package/dist/components/icons/info.svelte +12 -0
  92. package/dist/components/icons/info.svelte.d.ts +3 -0
  93. package/dist/components/icons/minus.svelte +12 -0
  94. package/dist/components/icons/minus.svelte.d.ts +3 -0
  95. package/dist/components/icons/sort.svelte +16 -0
  96. package/dist/components/icons/sort.svelte.d.ts +3 -0
  97. package/dist/components/icons/spinner.svelte +9 -0
  98. package/dist/components/icons/spinner.svelte.d.ts +3 -0
  99. package/dist/components/icons/success.svelte +12 -0
  100. package/dist/components/icons/success.svelte.d.ts +3 -0
  101. package/dist/components/icons/types.d.ts +2 -0
  102. package/dist/components/icons/types.js +1 -0
  103. package/dist/components/icons/warning.svelte +12 -0
  104. package/dist/components/icons/warning.svelte.d.ts +3 -0
  105. package/dist/components/input/index.d.ts +6 -0
  106. package/dist/components/input/index.js +5 -0
  107. package/dist/components/input/input.password.svelte +38 -0
  108. package/dist/components/input/input.password.svelte.d.ts +7 -0
  109. package/dist/components/input/input.stories.svelte +41 -0
  110. package/dist/components/input/input.stories.svelte.d.ts +19 -0
  111. package/dist/components/input/input.svelte +65 -0
  112. package/dist/components/input/input.svelte.d.ts +12 -0
  113. package/dist/components/input/styles.d.ts +141 -0
  114. package/dist/components/input/styles.js +64 -0
  115. package/dist/components/pagination/components/pagination.ellipsis.svelte +27 -0
  116. package/dist/components/pagination/components/pagination.ellipsis.svelte.d.ts +7 -0
  117. package/dist/components/pagination/components/pagination.item.svelte +16 -0
  118. package/dist/components/pagination/components/pagination.item.svelte.d.ts +5 -0
  119. package/dist/components/pagination/components/pagination.next-button.svelte +28 -0
  120. package/dist/components/pagination/components/pagination.next-button.svelte.d.ts +5 -0
  121. package/dist/components/pagination/components/pagination.prev-button.svelte +28 -0
  122. package/dist/components/pagination/components/pagination.prev-button.svelte.d.ts +5 -0
  123. package/dist/components/pagination/components/pagination.root.svelte +29 -0
  124. package/dist/components/pagination/components/pagination.root.svelte.d.ts +6 -0
  125. package/dist/components/pagination/index.d.ts +16 -0
  126. package/dist/components/pagination/index.js +16 -0
  127. package/dist/components/pagination/pagination.stories.svelte +69 -0
  128. package/dist/components/pagination/pagination.stories.svelte.d.ts +19 -0
  129. package/dist/components/pagination/presets/basic.svelte +31 -0
  130. package/dist/components/pagination/presets/basic.svelte.d.ts +5 -0
  131. package/dist/components/pagination/presets/index.d.ts +1 -0
  132. package/dist/components/pagination/presets/index.js +1 -0
  133. package/dist/components/pagination/styles.d.ts +98 -0
  134. package/dist/components/pagination/styles.js +51 -0
  135. package/dist/components/segment/components/segment.item.svelte +38 -0
  136. package/dist/components/segment/components/segment.item.svelte.d.ts +9 -0
  137. package/dist/components/segment/components/segment.root.svelte +66 -0
  138. package/dist/components/segment/components/segment.root.svelte.d.ts +13 -0
  139. package/dist/components/segment/components/segment.thumb.svelte +0 -0
  140. package/dist/components/segment/components/segment.thumb.svelte.d.ts +26 -0
  141. package/dist/components/segment/components/segmet.svelte.d.ts +43 -0
  142. package/dist/components/segment/components/segmet.svelte.js +74 -0
  143. package/dist/components/segment/index.d.ts +7 -0
  144. package/dist/components/segment/index.js +6 -0
  145. package/dist/components/segment/segment.stories.svelte +43 -0
  146. package/dist/components/segment/segment.stories.svelte.d.ts +18 -0
  147. package/dist/components/segment/styles.d.ts +107 -0
  148. package/dist/components/segment/styles.js +58 -0
  149. package/dist/components/select/components/select.content.svelte +0 -0
  150. package/dist/components/select/components/select.content.svelte.d.ts +26 -0
  151. package/dist/components/select/components/select.item.svelte +0 -0
  152. package/dist/components/select/components/select.item.svelte.d.ts +26 -0
  153. package/dist/components/select/components/select.root.svelte +27 -0
  154. package/dist/components/select/components/select.root.svelte.d.ts +6 -0
  155. package/dist/components/select/components/select.trigger.svelte +52 -0
  156. package/dist/components/select/components/select.trigger.svelte.d.ts +10 -0
  157. package/dist/components/select/components/select.viewport.svelte +0 -0
  158. package/dist/components/select/components/select.viewport.svelte.d.ts +26 -0
  159. package/dist/components/select/index.d.ts +7 -0
  160. package/dist/components/select/index.js +6 -0
  161. package/dist/components/select/select.stories.svelte +53 -0
  162. package/dist/components/select/select.stories.svelte.d.ts +18 -0
  163. package/dist/components/select/styles.d.ts +149 -0
  164. package/dist/components/select/styles.js +93 -0
  165. package/dist/components/skeleton/index.d.ts +1 -0
  166. package/dist/components/skeleton/index.js +1 -0
  167. package/dist/components/skeleton/skeleton.stories.svelte +121 -0
  168. package/dist/components/skeleton/skeleton.stories.svelte.d.ts +19 -0
  169. package/dist/components/skeleton/skeleton.svelte +25 -0
  170. package/dist/components/skeleton/skeleton.svelte.d.ts +8 -0
  171. package/dist/components/skeleton/styles.d.ts +78 -0
  172. package/dist/components/skeleton/styles.js +30 -0
  173. package/dist/components/spinner/index.d.ts +1 -0
  174. package/dist/components/spinner/index.js +1 -0
  175. package/dist/components/spinner/spinner.stories.svelte +29 -0
  176. package/dist/components/spinner/spinner.stories.svelte.d.ts +19 -0
  177. package/dist/components/spinner/spinner.svelte +24 -0
  178. package/dist/components/spinner/spinner.svelte.d.ts +9 -0
  179. package/dist/components/switch/index.d.ts +7 -2
  180. package/dist/components/switch/index.js +6 -3
  181. package/dist/components/switch/model/index.d.ts +1 -1
  182. package/dist/components/switch/model/index.js +1 -1
  183. package/dist/components/switch/model/switch-model.svelte.d.ts +1 -1
  184. package/dist/components/switch/model/switch-model.svelte.js +1 -1
  185. package/dist/components/switch/presets/basic.svelte +14 -0
  186. package/dist/components/switch/presets/basic.svelte.d.ts +5 -0
  187. package/dist/components/switch/switch.stories.svelte +16 -9
  188. package/dist/components/switch/switch.stories.svelte.d.ts +1 -0
  189. package/dist/components/toast/toast.component.svelte +2 -5
  190. package/dist/components/toast/toast.stories.svelte +2 -2
  191. package/dist/index.d.ts +10 -1
  192. package/dist/index.js +10 -1
  193. package/dist/internal/mocks/data-table.d.ts +9 -0
  194. package/dist/internal/mocks/data-table.js +146 -0
  195. package/dist/internal/types/common.d.ts +1 -0
  196. package/dist/internal/utils/attrs.d.ts +3 -0
  197. package/dist/internal/utils/attrs.js +9 -0
  198. package/dist/internal/utils/objects.d.ts +12 -0
  199. package/dist/internal/utils/objects.js +52 -0
  200. package/package.json +9 -2
  201. package/dist/assets/icons/check.svg +0 -4
  202. package/dist/assets/icons/chevron-down.svg +0 -4
  203. package/dist/assets/icons/chevron-left.svg +0 -4
  204. package/dist/assets/icons/chevron-right.svg +0 -4
  205. package/dist/assets/icons/chevron-small-down.svg +0 -4
  206. package/dist/assets/icons/chevron-small-left.svg +0 -4
  207. package/dist/assets/icons/chevron-small-right.svg +0 -4
  208. package/dist/assets/icons/chevron-small-up.svg +0 -4
  209. package/dist/assets/icons/chevron-up.svg +0 -4
  210. package/dist/assets/icons/error.svg +0 -4
  211. package/dist/assets/icons/info.svg +0 -4
  212. package/dist/assets/icons/minus.svg +0 -4
  213. package/dist/assets/icons/success.svg +0 -4
  214. package/dist/assets/icons/warning.svg +0 -3
  215. package/dist/internal/types/attrs.d.ts +0 -1
  216. package/dist/internal/types/attrs.js +0 -3
@@ -0,0 +1,51 @@
1
+ import { keyWithPrefix } from '../../internal/utils/common.js';
2
+ import { tv } from '../../internal/utils/tailwindcss.js';
3
+ import { Context } from 'runed';
4
+ export const paginationStyles = tv({
5
+ slots: {
6
+ root: ['cgui:flex cgui:items-center cgui:gap-1'],
7
+ item: [
8
+ 'cgui:flex cgui:items-center cgui:justify-center',
9
+ 'cgui:text-fg-dark cgui:text-body-2 cgui:font-normal',
10
+ 'cgui:border cgui:border-transparent',
11
+ 'cgui:transition-all cgui:duration-250 cgui:ease-in-out',
12
+ 'cgui:cursor-pointer cgui:select-none cgui:rounded-full',
13
+ 'cgui:data-[selected=""]:text-fg-primary cgui:data-[selected=""]:border-stroke-primary',
14
+ 'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed cgui:disabled:pointer-events-none',
15
+ ],
16
+ button: [
17
+ 'cgui:flex cgui:items-center cgui:justify-center cgui:shrink-0 cgui:size-6 cgui:text-icon-regular',
18
+ 'cgui:select-none cgui:cursor-pointer',
19
+ 'cgui:transition-all cgui:duration-250 cgui:ease-in-out',
20
+ 'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed cgui:disabled:pointer-events-none',
21
+ ],
22
+ ellipsis: ['cgui:flex cgui:items-center cgui:justify-center cgui:shrink-0 cgui:size-6 cgui:text-icon-regular'],
23
+ },
24
+ variants: {
25
+ centered: {
26
+ true: {
27
+ root: ['cgui:justify-center'],
28
+ },
29
+ },
30
+ orientation: {
31
+ horizontal: {
32
+ root: ['cgui:flex-row'],
33
+ },
34
+ vertical: {
35
+ root: ['cgui:flex-col'],
36
+ },
37
+ },
38
+ size: {
39
+ sm: {
40
+ item: ['cgui:size-6'],
41
+ },
42
+ md: {
43
+ item: ['cgui:size-8'],
44
+ },
45
+ lg: {
46
+ item: ['cgui:size-10'],
47
+ },
48
+ },
49
+ },
50
+ });
51
+ export const PaginationStylesContext = new Context(keyWithPrefix('pagination-styles'));
@@ -0,0 +1,38 @@
1
+ <script lang="ts" module>
2
+ import type { PrimitiveButtonAttributes } from '../../../internal/types/html-attributes.js';
3
+ import { cn } from '../../../internal/utils/common.js';
4
+ import { useId } from 'bits-ui';
5
+ import { box, mergeProps, type WithChildren, type WithElementRef, type Without } from 'svelte-toolbelt';
6
+ import { SegmentStylesContext } from '../styles.js';
7
+ import { SegmentItemState } from './segmet.svelte.js';
8
+
9
+ type SegmentItemPropsWithoutHTML = WithElementRef<
10
+ WithChildren<{
11
+ value: string;
12
+ }>
13
+ >;
14
+
15
+ export type SegmentItemProps = SegmentItemPropsWithoutHTML &
16
+ Without<PrimitiveButtonAttributes, SegmentItemPropsWithoutHTML>;
17
+ </script>
18
+
19
+ <script lang="ts">
20
+ let { value, ref = $bindable(null), id = useId(), children, class: className, ...props }: SegmentItemProps = $props();
21
+
22
+ const itemState = SegmentItemState.create({
23
+ value: box.with(() => value),
24
+ ref: box.with(
25
+ () => ref,
26
+ (v) => (ref = v)
27
+ ),
28
+ id: box.with(() => id),
29
+ });
30
+
31
+ const styles = SegmentStylesContext.get();
32
+
33
+ const mergedProps = $derived(mergeProps(props, itemState.props));
34
+ </script>
35
+
36
+ <button class={cn(styles.current.item(), className)} {...mergedProps}>
37
+ {@render children?.()}
38
+ </button>
@@ -0,0 +1,9 @@
1
+ import type { PrimitiveButtonAttributes } from '../../../internal/types/html-attributes.js';
2
+ import { type WithChildren, type WithElementRef, type Without } from 'svelte-toolbelt';
3
+ type SegmentItemPropsWithoutHTML = WithElementRef<WithChildren<{
4
+ value: string;
5
+ }>>;
6
+ export type SegmentItemProps = SegmentItemPropsWithoutHTML & Without<PrimitiveButtonAttributes, SegmentItemPropsWithoutHTML>;
7
+ declare const Segment: import("svelte").Component<SegmentItemProps, {}, "ref">;
8
+ type Segment = ReturnType<typeof Segment>;
9
+ export default Segment;
@@ -0,0 +1,66 @@
1
+ <script lang="ts" module>
2
+ import type { Without } from '../../../internal/types/common.js';
3
+ import type { PrimitiveDivAttributes } from '../../../internal/types/html-attributes.js';
4
+ import { cn } from '../../../internal/utils/common.js';
5
+ import { useId } from 'bits-ui';
6
+ import { box, mergeProps, type WithChildren, type WithElementRef } from 'svelte-toolbelt';
7
+ import { SegmentStylesContext, segmentVariants, type SegmentVariantsProps } from '../styles.js';
8
+ import { SegmentRootState } from './segmet.svelte.js';
9
+
10
+ type SegmentRootPropsWithouitHTML = WithElementRef<
11
+ WithChildren<
12
+ {
13
+ value?: string;
14
+
15
+ onValueChange?: (value: string) => void;
16
+
17
+ disabled?: boolean;
18
+ } & SegmentVariantsProps
19
+ >
20
+ >;
21
+
22
+ export type SegmentRootProps = SegmentRootPropsWithouitHTML &
23
+ Without<PrimitiveDivAttributes, SegmentRootPropsWithouitHTML>;
24
+ </script>
25
+
26
+ <script lang="ts">
27
+ let {
28
+ value = $bindable(''),
29
+ ref = $bindable(null),
30
+ id = useId(),
31
+ disabled = false,
32
+ children,
33
+ class: className,
34
+ variant = 'primary',
35
+ rounded = 'sm',
36
+ size = 'md',
37
+ onValueChange,
38
+ ...restProps
39
+ }: SegmentRootProps = $props();
40
+
41
+ const rootState = SegmentRootState.create({
42
+ value: box.with(
43
+ () => value,
44
+ (v) => {
45
+ onValueChange?.(v);
46
+ return (value = v);
47
+ }
48
+ ),
49
+ ref: box.with(
50
+ () => ref,
51
+ (v) => (ref = v)
52
+ ),
53
+ id: box.with(() => id),
54
+ disabled: box.with(() => disabled),
55
+ });
56
+
57
+ const variants = $derived(segmentVariants({ variant, rounded, size }));
58
+
59
+ SegmentStylesContext.set(box.with(() => variants));
60
+
61
+ const mergedProps = $derived(mergeProps(restProps, rootState.props));
62
+ </script>
63
+
64
+ <div class={cn(variants.root(), className)} {...mergedProps}>
65
+ {@render children?.()}
66
+ </div>
@@ -0,0 +1,13 @@
1
+ import type { Without } from '../../../internal/types/common.js';
2
+ import type { PrimitiveDivAttributes } from '../../../internal/types/html-attributes.js';
3
+ import { type WithChildren, type WithElementRef } from 'svelte-toolbelt';
4
+ import { type SegmentVariantsProps } from '../styles.js';
5
+ type SegmentRootPropsWithouitHTML = WithElementRef<WithChildren<{
6
+ value?: string;
7
+ onValueChange?: (value: string) => void;
8
+ disabled?: boolean;
9
+ } & SegmentVariantsProps>>;
10
+ export type SegmentRootProps = SegmentRootPropsWithouitHTML & Without<PrimitiveDivAttributes, SegmentRootPropsWithouitHTML>;
11
+ declare const Segment: import("svelte").Component<SegmentRootProps, {}, "value" | "ref">;
12
+ type Segment = ReturnType<typeof Segment>;
13
+ export default Segment;
@@ -0,0 +1,26 @@
1
+ export default Segment;
2
+ type Segment = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Segment: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,43 @@
1
+ import type { RefAttachment } from '../../../internal/types/common.js';
2
+ import { type ReadableBoxedValues, type WithRefProps, type WritableBoxedValues } from 'svelte-toolbelt';
3
+ type SegmentRootStateOpts = WithRefProps<WritableBoxedValues<{
4
+ value: string;
5
+ }> & ReadableBoxedValues<{
6
+ disabled: boolean;
7
+ }>>;
8
+ export declare class SegmentRootState {
9
+ static create(opts: SegmentRootStateOpts): SegmentRootState;
10
+ readonly opts: SegmentRootStateOpts;
11
+ readonly attachment: RefAttachment;
12
+ constructor(opts: SegmentRootStateOpts);
13
+ readonly props: {
14
+ readonly id: string;
15
+ readonly 'data-disabled': "" | undefined;
16
+ readonly "data-slot": "root";
17
+ };
18
+ registerItem(id: string, value: string): void;
19
+ setValue(value: string): void;
20
+ }
21
+ type SegmentItemStateOpts = WithRefProps<ReadableBoxedValues<{
22
+ value: string;
23
+ }>>;
24
+ export declare class SegmentItemState {
25
+ #private;
26
+ static create(opts: SegmentItemStateOpts): SegmentItemState;
27
+ readonly opts: SegmentItemStateOpts;
28
+ readonly attachment: RefAttachment;
29
+ readonly root: SegmentRootState;
30
+ readonly trueDisabled: boolean;
31
+ readonly trueActive: boolean;
32
+ constructor(opts: SegmentItemStateOpts, root: SegmentRootState);
33
+ onclick(): void;
34
+ readonly props: {
35
+ readonly id: string;
36
+ readonly disabled: boolean;
37
+ readonly 'data-disabled': "" | undefined;
38
+ readonly 'data-active': "" | undefined;
39
+ readonly "data-slot": "item";
40
+ readonly onclick: () => void;
41
+ };
42
+ }
43
+ export {};
@@ -0,0 +1,74 @@
1
+ import { getDataActive, getDataDisabled } from '../../../internal/utils/attrs.js';
2
+ import { keyWithPrefix } from '../../../internal/utils/common.js';
3
+ import { Context } from 'runed';
4
+ import { attachRef } from 'svelte-toolbelt';
5
+ const SLOT_ATTR_NAME = 'data-slot';
6
+ const SLOT_ATTR_VALUES = {
7
+ root: 'root',
8
+ item: 'item',
9
+ thumb: 'thumb',
10
+ };
11
+ const SegmentRootCtx = new Context(keyWithPrefix('segment-root'));
12
+ export class SegmentRootState {
13
+ static create(opts) {
14
+ return SegmentRootCtx.set(new SegmentRootState(opts));
15
+ }
16
+ opts;
17
+ attachment;
18
+ constructor(opts) {
19
+ this.setValue = this.setValue.bind(this);
20
+ this.opts = opts;
21
+ this.attachment = attachRef(opts.ref);
22
+ }
23
+ props = $derived.by(() => ({
24
+ id: this.opts.id.current,
25
+ 'data-disabled': getDataDisabled(this.opts.disabled.current),
26
+ [SLOT_ATTR_NAME]: SLOT_ATTR_VALUES.root,
27
+ ...this.attachment,
28
+ }));
29
+ registerItem(id, value) { }
30
+ setValue(value) {
31
+ this.opts.value.current = value;
32
+ }
33
+ }
34
+ export class SegmentItemState {
35
+ static create(opts) {
36
+ return new SegmentItemState(opts, SegmentRootCtx.get());
37
+ }
38
+ opts;
39
+ attachment;
40
+ root;
41
+ trueDisabled = $derived.by(() => {
42
+ if (this.root.opts.disabled.current)
43
+ return true;
44
+ return this.root.opts.disabled.current;
45
+ });
46
+ trueActive = $derived.by(() => {
47
+ return this.opts.value.current === this.root.opts.value.current;
48
+ });
49
+ constructor(opts, root) {
50
+ this.onclick = this.onclick.bind(this);
51
+ this.opts = opts;
52
+ this.root = root;
53
+ this.attachment = attachRef(opts.ref);
54
+ }
55
+ #activate() {
56
+ if (this.root.opts.value.current === this.opts.value.current)
57
+ return;
58
+ this.root.setValue(this.opts.value.current);
59
+ }
60
+ onclick() {
61
+ if (this.trueDisabled)
62
+ return;
63
+ this.#activate();
64
+ }
65
+ props = $derived.by(() => ({
66
+ id: this.opts.id.current,
67
+ disabled: this.trueDisabled,
68
+ 'data-disabled': getDataDisabled(this.trueDisabled),
69
+ 'data-active': getDataActive(this.trueActive),
70
+ [SLOT_ATTR_NAME]: SLOT_ATTR_VALUES.item,
71
+ onclick: this.onclick,
72
+ ...this.attachment,
73
+ }));
74
+ }
@@ -0,0 +1,7 @@
1
+ import { type SegmentItemProps } from './components/segment.item.svelte';
2
+ import { type SegmentRootProps } from './components/segment.root.svelte';
3
+ export declare const SegmentPrimitive: {
4
+ Root: import("svelte").Component<SegmentRootProps, {}, "value" | "ref">;
5
+ Item: import("svelte").Component<SegmentItemProps, {}, "ref">;
6
+ };
7
+ export type { SegmentItemProps, SegmentRootProps };
@@ -0,0 +1,6 @@
1
+ import Item, {} from './components/segment.item.svelte';
2
+ import Root, {} from './components/segment.root.svelte';
3
+ export const SegmentPrimitive = {
4
+ Root,
5
+ Item,
6
+ };
@@ -0,0 +1,43 @@
1
+ <script lang="ts" module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import type { Parameters } from '@storybook/sveltekit';
4
+
5
+ import type { ComponentProps } from 'svelte';
6
+ import { SegmentPrimitive } from './index.js';
7
+
8
+ const parameters: Parameters = {
9
+ controls: {
10
+ include: ['value', 'disabled', 'size', 'variant', 'rounded'],
11
+ },
12
+ };
13
+
14
+ const { Story } = defineMeta({
15
+ title: 'UI Kit/Segment',
16
+ component: SegmentPrimitive.Root,
17
+ render: template,
18
+ tags: ['autodocs'],
19
+
20
+ parameters,
21
+ });
22
+
23
+ type Args = ComponentProps<typeof SegmentPrimitive.Root>;
24
+
25
+ const args: Args = {
26
+ value: '1',
27
+ disabled: false,
28
+ size: 'md',
29
+ variant: 'primary',
30
+ rounded: 'sm',
31
+ };
32
+ </script>
33
+
34
+ {#snippet template(args: Args)}
35
+ <SegmentPrimitive.Root {...args}>
36
+ <SegmentPrimitive.Item value="1">Segment</SegmentPrimitive.Item>
37
+ <SegmentPrimitive.Item value="2">Segment</SegmentPrimitive.Item>
38
+ <SegmentPrimitive.Item value="3">Segment</SegmentPrimitive.Item>
39
+ <SegmentPrimitive.Item value="4">Segment</SegmentPrimitive.Item>
40
+ </SegmentPrimitive.Root>
41
+ {/snippet}
42
+
43
+ <Story name="Basic" {args} {parameters} {template} />
@@ -0,0 +1,18 @@
1
+ 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> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const Segment: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type Segment = InstanceType<typeof Segment>;
18
+ export default Segment;
@@ -0,0 +1,107 @@
1
+ import { Context } from 'runed';
2
+ import type { ReadableBox } from 'svelte-toolbelt';
3
+ import type { VariantProps } from 'tailwind-variants';
4
+ export declare const segmentVariants: import("tailwind-variants").TVReturnType<{
5
+ variant: {
6
+ primary: {
7
+ root: string[];
8
+ item: string[];
9
+ thumb: string[];
10
+ };
11
+ clear: {};
12
+ };
13
+ rounded: {
14
+ sm: {
15
+ root: string[];
16
+ };
17
+ md: {
18
+ root: string[];
19
+ };
20
+ clear: {};
21
+ };
22
+ size: {
23
+ sm: {
24
+ item: string[];
25
+ };
26
+ md: {
27
+ item: string[];
28
+ };
29
+ lg: {
30
+ item: string[];
31
+ };
32
+ };
33
+ }, {
34
+ root: string[];
35
+ item: string[];
36
+ thumb: string[];
37
+ }, undefined, {
38
+ variant: {
39
+ primary: {
40
+ root: string[];
41
+ item: string[];
42
+ thumb: string[];
43
+ };
44
+ clear: {};
45
+ };
46
+ rounded: {
47
+ sm: {
48
+ root: string[];
49
+ };
50
+ md: {
51
+ root: string[];
52
+ };
53
+ clear: {};
54
+ };
55
+ size: {
56
+ sm: {
57
+ item: string[];
58
+ };
59
+ md: {
60
+ item: string[];
61
+ };
62
+ lg: {
63
+ item: string[];
64
+ };
65
+ };
66
+ }, {
67
+ root: string[];
68
+ item: string[];
69
+ thumb: string[];
70
+ }, import("tailwind-variants").TVReturnType<{
71
+ variant: {
72
+ primary: {
73
+ root: string[];
74
+ item: string[];
75
+ thumb: string[];
76
+ };
77
+ clear: {};
78
+ };
79
+ rounded: {
80
+ sm: {
81
+ root: string[];
82
+ };
83
+ md: {
84
+ root: string[];
85
+ };
86
+ clear: {};
87
+ };
88
+ size: {
89
+ sm: {
90
+ item: string[];
91
+ };
92
+ md: {
93
+ item: string[];
94
+ };
95
+ lg: {
96
+ item: string[];
97
+ };
98
+ };
99
+ }, {
100
+ root: string[];
101
+ item: string[];
102
+ thumb: string[];
103
+ }, undefined, unknown, unknown, undefined>>;
104
+ export type SegmentVariantsProps = VariantProps<typeof segmentVariants>;
105
+ type SegmentStylesContextValues = ReadableBox<ReturnType<typeof segmentVariants>>;
106
+ export declare const SegmentStylesContext: Context<SegmentStylesContextValues>;
107
+ export {};
@@ -0,0 +1,58 @@
1
+ import { keyWithPrefix } from '../../internal/utils/common.js';
2
+ import { tv } from '../../internal/utils/tailwindcss.js';
3
+ import { Context } from 'runed';
4
+ export const segmentVariants = tv({
5
+ slots: {
6
+ root: [
7
+ 'cgui:flex cgui:items-center cgui:p-1',
8
+ 'cgui:transition-all cgui:duration-250 cgui:ease-in-out',
9
+ 'cgui:data-[disabled=""]:opacity-50 cgui:data-[disabled=""]:cursor-not-allowed cgui:data-[disabled=""]:pointer-events-none',
10
+ ],
11
+ item: [
12
+ 'cgui:flex cgui:items-center cgui:justify-center cgui:flex-1',
13
+ 'cgui:font-medium cgui:text-body-2',
14
+ 'cgui:rounded-[inherit]',
15
+ 'cgui:cursor-pointer cgui:overflow-hidden cgui:select-none',
16
+ 'cgui:transition-all cgui:duration-250 cgui:ease-in-out',
17
+ ],
18
+ thumb: [
19
+ 'cgui:rounded-[inherit] cgui:pointer-events-none',
20
+ 'cgui:shadow-segment-thumb',
21
+ 'cgui:transition-all cgui:duration-250 cgui:ease-in-out',
22
+ ],
23
+ },
24
+ variants: {
25
+ variant: {
26
+ primary: {
27
+ root: ['cgui:bg-surface-primary-light cgui:border cgui:border-stroke-divider'],
28
+ item: [
29
+ 'cgui:text-fg-regular',
30
+ 'cgui:data-[active=""]:text-fg-primary cgui:data-[active=""]:bg-surface-white cgui:data-[active=""]:shadow-segment-thumb',
31
+ ],
32
+ thumb: ['cgui:bg-surface-white'],
33
+ },
34
+ clear: {},
35
+ },
36
+ rounded: {
37
+ sm: {
38
+ root: ['cgui:rounded-sm'],
39
+ },
40
+ md: {
41
+ root: ['cgui:rounded-md'],
42
+ },
43
+ clear: {},
44
+ },
45
+ size: {
46
+ sm: {
47
+ item: ['cgui:h-6'],
48
+ },
49
+ md: {
50
+ item: ['cgui:h-8.5'],
51
+ },
52
+ lg: {
53
+ item: ['cgui:h-11'],
54
+ },
55
+ },
56
+ },
57
+ });
58
+ export const SegmentStylesContext = new Context(keyWithPrefix('segment-styles'));
@@ -0,0 +1,26 @@
1
+ export default Select;
2
+ type Select = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Select: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,26 @@
1
+ export default Select;
2
+ type Select = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Select: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,27 @@
1
+ <script lang="ts" module>
2
+ export type SelectRootProps = SelectRootPropsPrimitive & SelectVariantsProps;
3
+ </script>
4
+
5
+ <script lang="ts">
6
+ import { box } from 'svelte-toolbelt';
7
+
8
+ import { SelectStylesContext, selectVariants, type SelectVariantsProps } from '../styles.js';
9
+
10
+ import { Select as SelectPrimitive, type SelectRootProps as SelectRootPropsPrimitive } from 'bits-ui';
11
+
12
+ let {
13
+ value = $bindable(''),
14
+ open = $bindable(false),
15
+ size = 'md',
16
+ variant = 'primary',
17
+ rounded = 'sm',
18
+ w = 'full',
19
+ ...restProps
20
+ }: SelectRootProps = $props();
21
+
22
+ const variants = $derived(selectVariants({ size, variant, rounded, w }));
23
+
24
+ SelectStylesContext.set(box.with(() => variants));
25
+ </script>
26
+
27
+ <SelectPrimitive.Root bind:value={value as never} bind:open {...restProps} />
@@ -0,0 +1,6 @@
1
+ export type SelectRootProps = SelectRootPropsPrimitive & SelectVariantsProps;
2
+ import { type SelectVariantsProps } from '../styles.js';
3
+ import { type SelectRootProps as SelectRootPropsPrimitive } from 'bits-ui';
4
+ declare const Select: import("svelte").Component<SelectRootProps, {}, "value" | "open">;
5
+ type Select = ReturnType<typeof Select>;
6
+ export default Select;