@r2digisolutions/components 0.3.1 → 0.3.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.
@@ -2,7 +2,14 @@ import type { StoryObj } from '@storybook/svelte';
2
2
  declare const meta: {
3
3
  title: string;
4
4
  component: import("svelte").Component<{
5
- cols?: 1 | 2 | 3 | 4;
5
+ cols?: (1 | 2 | 9 | 3 | 4 | 8 | 5 | 6 | 7 | 10 | 11 | 12) | {
6
+ base?: 1 | 2 | 9 | 3 | 4 | 8 | 5 | 6 | 7 | 10 | 11 | 12;
7
+ sm?: 1 | 2 | 9 | 3 | 4 | 8 | 5 | 6 | 7 | 10 | 11 | 12;
8
+ md?: 1 | 2 | 9 | 3 | 4 | 8 | 5 | 6 | 7 | 10 | 11 | 12;
9
+ lg?: 1 | 2 | 9 | 3 | 4 | 8 | 5 | 6 | 7 | 10 | 11 | 12;
10
+ xl?: 1 | 2 | 9 | 3 | 4 | 8 | 5 | 6 | 7 | 10 | 11 | 12;
11
+ '2xl'?: 1 | 2 | 9 | 3 | 4 | 8 | 5 | 6 | 7 | 10 | 11 | 12;
12
+ };
6
13
  }, {}, "">;
7
14
  tags: string[];
8
15
  argTypes: {
@@ -19,3 +26,4 @@ export default meta;
19
26
  type Story = StoryObj<typeof meta>;
20
27
  export declare const Default: Story;
21
28
  export declare const TwoColumns: Story;
29
+ export declare const Responsive: Story;
@@ -11,3 +11,6 @@ const meta = {
11
11
  export default meta;
12
12
  export const Default = {};
13
13
  export const TwoColumns = { args: { cols: 2 } };
14
+ export const Responsive = {
15
+ args: { cols: { base: 1, sm: 2, md: 3, lg: 4, xl: 5, '2xl': 6 } }
16
+ };
@@ -4,8 +4,19 @@
4
4
  type GridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
5
  type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
6
6
 
7
+ type GridColsConfig =
8
+ | GridCols
9
+ | {
10
+ base?: GridCols;
11
+ sm?: GridCols;
12
+ md?: GridCols;
13
+ lg?: GridCols;
14
+ xl?: GridCols;
15
+ '2xl'?: GridCols;
16
+ };
17
+
7
18
  interface GridProps {
8
- cols?: GridCols;
19
+ cols?: GridColsConfig;
9
20
  gap?: GridGap;
10
21
  class?: string;
11
22
  children?: Snippet;
@@ -36,8 +47,98 @@
36
47
  11: 'grid-cols-11',
37
48
  12: 'grid-cols-12'
38
49
  };
50
+
51
+ const smColClasses: Record<GridCols, string> = {
52
+ 1: 'sm:grid-cols-1',
53
+ 2: 'sm:grid-cols-2',
54
+ 3: 'sm:grid-cols-3',
55
+ 4: 'sm:grid-cols-4',
56
+ 5: 'sm:grid-cols-5',
57
+ 6: 'sm:grid-cols-6',
58
+ 7: 'sm:grid-cols-7',
59
+ 8: 'sm:grid-cols-8',
60
+ 9: 'sm:grid-cols-9',
61
+ 10: 'sm:grid-cols-10',
62
+ 11: 'sm:grid-cols-11',
63
+ 12: 'sm:grid-cols-12'
64
+ };
65
+
66
+ const mdColClasses: Record<GridCols, string> = {
67
+ 1: 'md:grid-cols-1',
68
+ 2: 'md:grid-cols-2',
69
+ 3: 'md:grid-cols-3',
70
+ 4: 'md:grid-cols-4',
71
+ 5: 'md:grid-cols-5',
72
+ 6: 'md:grid-cols-6',
73
+ 7: 'md:grid-cols-7',
74
+ 8: 'md:grid-cols-8',
75
+ 9: 'md:grid-cols-9',
76
+ 10: 'md:grid-cols-10',
77
+ 11: 'md:grid-cols-11',
78
+ 12: 'md:grid-cols-12'
79
+ };
80
+
81
+ const lgColClasses: Record<GridCols, string> = {
82
+ 1: 'lg:grid-cols-1',
83
+ 2: 'lg:grid-cols-2',
84
+ 3: 'lg:grid-cols-3',
85
+ 4: 'lg:grid-cols-4',
86
+ 5: 'lg:grid-cols-5',
87
+ 6: 'lg:grid-cols-6',
88
+ 7: 'lg:grid-cols-7',
89
+ 8: 'lg:grid-cols-8',
90
+ 9: 'lg:grid-cols-9',
91
+ 10: 'lg:grid-cols-10',
92
+ 11: 'lg:grid-cols-11',
93
+ 12: 'lg:grid-cols-12'
94
+ };
95
+
96
+ const xlColClasses: Record<GridCols, string> = {
97
+ 1: 'xl:grid-cols-1',
98
+ 2: 'xl:grid-cols-2',
99
+ 3: 'xl:grid-cols-3',
100
+ 4: 'xl:grid-cols-4',
101
+ 5: 'xl:grid-cols-5',
102
+ 6: 'xl:grid-cols-6',
103
+ 7: 'xl:grid-cols-7',
104
+ 8: 'xl:grid-cols-8',
105
+ 9: 'xl:grid-cols-9',
106
+ 10: 'xl:grid-cols-10',
107
+ 11: 'xl:grid-cols-11',
108
+ 12: 'xl:grid-cols-12'
109
+ };
110
+
111
+ const twoxlColClasses: Record<GridCols, string> = {
112
+ 1: '2xl:grid-cols-1',
113
+ 2: '2xl:grid-cols-2',
114
+ 3: '2xl:grid-cols-3',
115
+ 4: '2xl:grid-cols-4',
116
+ 5: '2xl:grid-cols-5',
117
+ 6: '2xl:grid-cols-6',
118
+ 7: '2xl:grid-cols-7',
119
+ 8: '2xl:grid-cols-8',
120
+ 9: '2xl:grid-cols-9',
121
+ 10: '2xl:grid-cols-10',
122
+ 11: '2xl:grid-cols-11',
123
+ 12: '2xl:grid-cols-12'
124
+ };
125
+
126
+ const resolved = $derived(typeof cols === 'number' ? { base: cols } : cols);
127
+ const baseCols = $derived(resolved.base ?? 3);
39
128
  </script>
40
129
 
41
- <div class={['grid', colClasses[cols], gaps[gap], className]}>
130
+ <div
131
+ class={[
132
+ 'grid',
133
+ colClasses[baseCols],
134
+ resolved.sm != null && smColClasses[resolved.sm],
135
+ resolved.md != null && mdColClasses[resolved.md],
136
+ resolved.lg != null && lgColClasses[resolved.lg],
137
+ resolved.xl != null && xlColClasses[resolved.xl],
138
+ resolved['2xl'] != null && twoxlColClasses[resolved['2xl']],
139
+ gaps[gap],
140
+ className
141
+ ]}
142
+ >
42
143
  {#if children}{@render children()}{/if}
43
144
  </div>
@@ -1,8 +1,16 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  type GridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
3
  type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
4
+ type GridColsConfig = GridCols | {
5
+ base?: GridCols;
6
+ sm?: GridCols;
7
+ md?: GridCols;
8
+ lg?: GridCols;
9
+ xl?: GridCols;
10
+ '2xl'?: GridCols;
11
+ };
4
12
  interface GridProps {
5
- cols?: GridCols;
13
+ cols?: GridColsConfig;
6
14
  gap?: GridGap;
7
15
  class?: string;
8
16
  children?: Snippet;
@@ -1,12 +1,26 @@
1
1
  <script lang="ts">
2
2
  import Grid from './Grid.svelte';
3
3
 
4
- let props = $props<{ cols?: 1 | 2 | 3 | 4 }>();
4
+ type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
5
+ type GridColsConfig =
6
+ | GridCols
7
+ | {
8
+ base?: GridCols;
9
+ sm?: GridCols;
10
+ md?: GridCols;
11
+ lg?: GridCols;
12
+ xl?: GridCols;
13
+ '2xl'?: GridCols;
14
+ };
15
+
16
+ let props = $props<{ cols?: GridColsConfig }>();
5
17
  </script>
6
18
 
7
- <Grid cols={props.cols ?? 3} gap="md" class="w-full max-w-lg">
19
+ <Grid cols={props.cols ?? 3} gap="md" class="w-full max-w-3xl">
8
20
  {#each [1, 2, 3, 4, 5, 6] as n}
9
- <div class="rounded-lg border border-border bg-surface-elevated px-3 py-6 text-center text-sm text-secondary">
21
+ <div
22
+ class="rounded-lg border border-border bg-surface-elevated px-3 py-6 text-center text-sm text-secondary"
23
+ >
10
24
  {n}
11
25
  </div>
12
26
  {/each}
@@ -1,5 +1,14 @@
1
+ type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
2
+ type GridColsConfig = GridCols | {
3
+ base?: GridCols;
4
+ sm?: GridCols;
5
+ md?: GridCols;
6
+ lg?: GridCols;
7
+ xl?: GridCols;
8
+ '2xl'?: GridCols;
9
+ };
1
10
  type $$ComponentProps = {
2
- cols?: 1 | 2 | 3 | 4;
11
+ cols?: GridColsConfig;
3
12
  };
4
13
  declare const GridStory: import("svelte").Component<$$ComponentProps, {}, "">;
5
14
  type GridStory = ReturnType<typeof GridStory>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@r2digisolutions/components",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "private": false,
5
5
  "description": "R2DigiSolutions Svelte 5 component library — Atomic Design, Tailwind 4, Light/Dark mode",
6
6
  "license": "MIT",