@bccampus/ui-components 0.1.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 (68) hide show
  1. package/README.md +69 -0
  2. package/components.json +22 -0
  3. package/dist/@bccampus-ui-components-0.1.0.tgz +0 -0
  4. package/dist/button.d.ts +16 -0
  5. package/dist/button.js +36 -0
  6. package/dist/caption.d.ts +13 -0
  7. package/dist/caption.js +27 -0
  8. package/dist/card.d.ts +40 -0
  9. package/dist/card.js +130 -0
  10. package/dist/horizontal-list.d.ts +9 -0
  11. package/dist/horizontal-list.js +145 -0
  12. package/dist/icon-generator.d.ts +50 -0
  13. package/dist/icon-generator.js +270 -0
  14. package/dist/index-DcqAdr0d.js +102 -0
  15. package/dist/jsx-runtime-BzflLqGi.js +282 -0
  16. package/dist/masked-image-generator.d.ts +57 -0
  17. package/dist/masked-image-generator.js +29 -0
  18. package/dist/mockServiceWorker.js +348 -0
  19. package/dist/tag.d.ts +16 -0
  20. package/dist/tag.js +32 -0
  21. package/dist/ui-components.d.ts +132 -0
  22. package/dist/ui-components.js +29 -0
  23. package/dist/utils-CRiPKpXj.js +2743 -0
  24. package/dist/utils.d.ts +5 -0
  25. package/dist/utils.js +4 -0
  26. package/eslint.config.js +31 -0
  27. package/index.html +13 -0
  28. package/package.json +85 -0
  29. package/public/mockServiceWorker.js +348 -0
  30. package/src/App.tsx +14 -0
  31. package/src/assets/icons/icon_01.svg +6 -0
  32. package/src/assets/icons/icon_02.svg +6 -0
  33. package/src/assets/icons/icon_03.svg +6 -0
  34. package/src/assets/icons/icon_04.svg +6 -0
  35. package/src/assets/icons/icon_05.svg +4 -0
  36. package/src/assets/icons/icon_06.svg +4 -0
  37. package/src/assets/images/bg_pattern_01.png +0 -0
  38. package/src/assets/images/bg_pattern_02.png +0 -0
  39. package/src/assets/images/bg_pattern_03.png +0 -0
  40. package/src/assets/images/bg_pattern_04.png +0 -0
  41. package/src/assets/images/image_01.jpg +0 -0
  42. package/src/assets/images/image_02.jpg +0 -0
  43. package/src/assets/images/image_03.webp +0 -0
  44. package/src/assets/images/image_04.png +0 -0
  45. package/src/assets/images/image_05.jpg +0 -0
  46. package/src/components/ui/button.tsx +47 -0
  47. package/src/components/ui/card.tsx +147 -0
  48. package/src/components/ui/horizontal-list.tsx +50 -0
  49. package/src/components/ui/icon-generator/generate-tiles.tsx +243 -0
  50. package/src/components/ui/icon-generator/icon-generator.tsx +51 -0
  51. package/src/components/ui/icon-generator/masked-image-generator.tsx +38 -0
  52. package/src/components/ui/icon-generator/types.ts +53 -0
  53. package/src/components/ui/index.ts +7 -0
  54. package/src/components/ui/tag.tsx +39 -0
  55. package/src/components/ui/typography/caption.tsx +32 -0
  56. package/src/lib/utils.ts +6 -0
  57. package/src/main.tsx +12 -0
  58. package/src/styles/all.css +4 -0
  59. package/src/styles/colors.css +106 -0
  60. package/src/styles/fonts.css +9 -0
  61. package/src/styles/index.css +7 -0
  62. package/src/styles/theme.css +126 -0
  63. package/src/styles/typography.css +479 -0
  64. package/src/vite-env.d.ts +1 -0
  65. package/tsconfig.app.json +38 -0
  66. package/tsconfig.json +19 -0
  67. package/tsconfig.node.json +25 -0
  68. package/vite.config.ts +44 -0
@@ -0,0 +1,479 @@
1
+ /* Typography */
2
+ h1,
3
+ h2,
4
+ h3,
5
+ h4,
6
+ h5,
7
+ h6 {
8
+ font-family: var(--font-sans-accent);
9
+ color: var(--primary);
10
+ text-wrap: balance;
11
+ letter-spacing: var(--tracking-tight);
12
+ font-weight: var(--font-weight-medium);
13
+ --tw-tracking: var(--tracking-tight);
14
+
15
+ &:not(:first-child) {
16
+ margin-top: calc(var(--spacing) * 4);
17
+ }
18
+ }
19
+ .heading-1,
20
+ .heading-2,
21
+ .heading-3 {
22
+ font-family: var(--font-sans-accent);
23
+ color: var(--primary);
24
+ text-wrap: balance;
25
+ letter-spacing: var(--tracking-tight);
26
+ font-weight: var(--font-weight-medium);
27
+ --tw-tracking: var(--tracking-tight);
28
+ }
29
+
30
+ h1,
31
+ .heading-1 {
32
+ font-size: var(--text-4xl);
33
+ font-weight: var(--font-weight-semibold);
34
+ line-height: calc(var(--spacing) * 9);
35
+ scroll-margin-right: calc(var(--spacing) * 18);
36
+
37
+ @media (width >= 40rem) {
38
+ font-size: var(--text-7xl);
39
+ line-height: calc(var(--spacing) * 18);
40
+ }
41
+ }
42
+
43
+ h2,
44
+ .heading-2 {
45
+ font-size: var(--text-3xl);
46
+ line-height: calc(var(--spacing) * 9);
47
+ scroll-margin-right: calc(var(--spacing) * 9);
48
+ }
49
+
50
+ h3,
51
+ .heading-3 {
52
+ font-size: var(--text-xl);
53
+ line-height: calc(var(--spacing) * 6);
54
+ scroll-margin-right: calc(var(--spacing) * 6);
55
+ }
56
+
57
+ p {
58
+ --tw-leading: calc(var(--spacing) * 6);
59
+ line-height: calc(var(--spacing) * 6);
60
+
61
+ &:not(:first-child) {
62
+ margin-top: calc(var(--spacing) * 4);
63
+ }
64
+ }
65
+
66
+ blockquote {
67
+ color: var(--primary);
68
+ font-family: var(--font-sans-accent);
69
+ font-weight: var(--font-weight-medium);
70
+
71
+ margin-inline: calc(var(--spacing) * 4);
72
+ margin-block: calc(var(--spacing) * 6);
73
+
74
+ & > cite {
75
+ display: block;
76
+ text-align: end;
77
+ }
78
+
79
+ @media (width >= 40rem) {
80
+ margin-inline: calc(var(--spacing) * 16);
81
+ }
82
+ }
83
+
84
+ aside {
85
+ display: block;
86
+ float: none;
87
+ width: var(--container-xs);
88
+ margin-block-start: calc(var(--spacing) * 4);
89
+ margin-block-end: calc(var(--spacing) * 2);
90
+ margin-inline: auto;
91
+ padding: calc(var(--spacing) * 4);
92
+ border-block-width: var(--spacing);
93
+
94
+ color: var(--color-sidebar-accent-foreground);
95
+ background-color: var(--color-sidebar-accent);
96
+ border-color: var(--color-sidebar-border);
97
+
98
+ @media (width >= 40rem) {
99
+ float: inline-end;
100
+ margin-left: calc(var(--spacing) * 2);
101
+ border-block-width: 0px;
102
+ border-inline-start-width: var(--spacing);
103
+ }
104
+ }
105
+
106
+ a {
107
+ text-decoration-line: underline;
108
+ text-underline-offset: 4px;
109
+
110
+ &:focus-visible {
111
+ outline-color: var(--color-ring);
112
+ outline-style: solid;
113
+ outline-offset: 0;
114
+ outline-width: var(--spacing);
115
+ }
116
+
117
+ &[data-slot] {
118
+ text-decoration-line: none;
119
+ }
120
+ }
121
+
122
+ ul,
123
+ ol {
124
+ margin-left: calc(var(--spacing) * 4);
125
+
126
+ & > li {
127
+ margin-top: calc(var(--spacing) * 2);
128
+ }
129
+
130
+ @media (width >= 40rem) {
131
+ margin-left: calc(var(--spacing) * 8);
132
+ }
133
+ }
134
+ ul {
135
+ list-style-type: disc;
136
+ }
137
+ li > ul {
138
+ list-style-type: circle;
139
+ }
140
+ li > ul > li > ul {
141
+ list-style-type: square;
142
+ }
143
+
144
+ ol {
145
+ list-style-type: decimal;
146
+ }
147
+ li > ol {
148
+ list-style-type: lower-alpha;
149
+ }
150
+ li > ol > li > ol {
151
+ list-style-type: lower-roman;
152
+ }
153
+
154
+ dl {
155
+ margin-top: calc(var(--spacing) * 2);
156
+ & > dt {
157
+ font-family: var(--font-sans-accent);
158
+ font-weight: var(--font-weight-medium);
159
+ font-style: italic;
160
+ margin-top: calc(var(--spacing));
161
+ &::after {
162
+ content: ": ";
163
+ }
164
+ }
165
+
166
+ & > dd {
167
+ margin-left: calc(var(--spacing) * 4);
168
+ font-size: var(--text-sm);
169
+ }
170
+ }
171
+
172
+ details {
173
+ margin-top: calc(var(--spacing) * 4);
174
+ border-width: 1px;
175
+ border-radius: var(--container-radius);
176
+
177
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke,
178
+ --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
179
+ transition-timing-function: var(--default-transition-timing-function);
180
+ transition-duration: var(--default-transition-duration);
181
+
182
+ &:hover {
183
+ background-color: var(--muted);
184
+ }
185
+
186
+ & > summary {
187
+ border-radius: var(--container-radius);
188
+ padding-inline: calc(var(--spacing) * 4);
189
+ padding-block: calc(var(--spacing) * 2);
190
+ list-style: none;
191
+
192
+ &::-webkit-details-marker {
193
+ display: none;
194
+ }
195
+
196
+ &:focus-visible {
197
+ outline-color: var(--color-ring);
198
+ outline-style: solid;
199
+ outline-offset: 0;
200
+ outline-width: var(--spacing);
201
+ }
202
+ }
203
+
204
+ &[open] {
205
+ background-color: var(--muted);
206
+ & > summary {
207
+ border-bottom-width: 1px;
208
+
209
+ border-bottom-left-radius: 0;
210
+ border-bottom-right-radius: 0;
211
+ }
212
+
213
+ & > p {
214
+ margin: 0;
215
+ padding: calc(var(--spacing) * 4);
216
+ }
217
+ }
218
+ }
219
+
220
+ details + details {
221
+ margin-top: calc(var(--spacing));
222
+ }
223
+
224
+ address {
225
+ font-style: italic;
226
+ margin-block: calc(var(--spacing) * 4);
227
+ }
228
+
229
+ code,
230
+ kbd,
231
+ samp {
232
+ position: relative;
233
+ color: var(--primary);
234
+ font-family: var(--font-mono);
235
+ font-size: var(--text-sm);
236
+ font-weight: var(--font-weight-medium);
237
+ }
238
+
239
+ code {
240
+ background-color: var(--color-muted);
241
+ border-radius: var(--radius-sm);
242
+
243
+ padding-inline: calc(var(--spacing) * 2);
244
+ padding-block: var(--spacing);
245
+ }
246
+
247
+ kbd {
248
+ text-shadow: var(--text-shadow-sm);
249
+ > kbd {
250
+ white-space: nowrap;
251
+ padding-inline: calc(var(--spacing) * 2);
252
+ padding-block: var(--spacing);
253
+ background-color: var(--color-muted);
254
+ border-radius: var(--radius-sm);
255
+ border-width: 1px;
256
+ box-shadow: 0 1px 1px color-mix(in oklab, var(--color-foreground) 20%, transparent),
257
+ 0 2px 0 0 color-mix(in oklab, var(--color-background) 20%, transparent) inset;
258
+ }
259
+ }
260
+
261
+ pre {
262
+ background-color: var(--color-muted);
263
+ border-radius: var(--radius-sm);
264
+ padding: calc(var(--spacing) * 4);
265
+ line-height: var(--text-lg--line-height);
266
+ font-size: var(--text-sm);
267
+
268
+ &:not(:first-child) {
269
+ margin-top: calc(var(--spacing) * 4);
270
+ }
271
+
272
+ code {
273
+ padding: 0px;
274
+ }
275
+ }
276
+
277
+ del {
278
+ text-decoration: none;
279
+ background-color: var(--color-red-200);
280
+ color: var(--foreground);
281
+ padding-inline: var(--spacing);
282
+ &:is(.dark *) {
283
+ background-color: var(--color-red-900);
284
+ }
285
+ }
286
+
287
+ ins {
288
+ text-decoration: none;
289
+ background-color: var(--color-green-200);
290
+ color: var(--foreground);
291
+ padding-inline: var(--spacing);
292
+ &:is(.dark *) {
293
+ background-color: var(--color-green-900);
294
+ }
295
+ }
296
+
297
+ mark {
298
+ text-decoration: none;
299
+ color: var(--foreground);
300
+ background-color: var(--color-teal-100);
301
+ padding-inline: var(--spacing);
302
+ &:is(.dark *) {
303
+ background-color: var(--color-teal-900);
304
+ }
305
+ }
306
+
307
+ abbr {
308
+ text-underline-offset: 4px;
309
+ }
310
+
311
+ /* Table */
312
+ .scroll-enclosure {
313
+ position: relative;
314
+ display: block;
315
+ width: 100%;
316
+ overflow: auto;
317
+ &:not(:first-child) {
318
+ margin-top: calc(var(--spacing) * 4);
319
+ }
320
+ }
321
+
322
+ .bordered-enclosure {
323
+ border-width: 1px;
324
+ border-radius: var(--container-radius);
325
+ }
326
+
327
+ table {
328
+ table-layout: auto;
329
+ position: relative;
330
+ border-spacing: 0;
331
+ border-collapse: separate;
332
+ caption-side: bottom;
333
+ background-color: var(--background);
334
+
335
+ display: block;
336
+ width: fit-content;
337
+ max-width: 100%;
338
+ overflow-x: auto;
339
+ margin-inline: auto;
340
+
341
+ .scroll-enclosure > & {
342
+ display: table;
343
+ overflow-x: initial;
344
+ width: 100%;
345
+ height: 100%;
346
+ }
347
+
348
+ &:not(:first-child) {
349
+ margin-top: calc(var(--spacing) * 4);
350
+ }
351
+ }
352
+
353
+ caption {
354
+ color: var(--muted-foreground);
355
+ margin: 0px;
356
+ padding: calc(var(--spacing) * 2);
357
+ border-top-width: 1px;
358
+
359
+ text-align: center;
360
+ font-family: var(--font-sans-accent);
361
+ font-size: var(--text-sm);
362
+ font-weight: var(--font-weight-medium);
363
+ line-height: 1.5em;
364
+ }
365
+
366
+ tr {
367
+ padding: 0px;
368
+ margin: 0px;
369
+ }
370
+ th,
371
+ td {
372
+ padding-inline: calc(var(--spacing) * 4);
373
+ padding-block: calc(var(--spacing) * 2);
374
+ text-align: left;
375
+ vertical-align: middle;
376
+ white-space: nowrap;
377
+
378
+ &[align="center"] {
379
+ text-align: center;
380
+ }
381
+ &[align="right"] {
382
+ text-align: right;
383
+ }
384
+ }
385
+
386
+ thead {
387
+ position: sticky;
388
+ z-index: 5;
389
+ top: 0px;
390
+ & th {
391
+ border-bottom-width: 1px;
392
+ font-family: var(--font-sans-accent);
393
+ font-weight: var(--font-weight-semibold);
394
+ background-color: var(--color-background);
395
+ vertical-align: bottom;
396
+ }
397
+ }
398
+
399
+ tbody {
400
+ & > tr:not(:last-child) {
401
+ th,
402
+ td {
403
+ border-bottom-width: 1px;
404
+ }
405
+ }
406
+ }
407
+
408
+ tfoot {
409
+ position: sticky;
410
+ z-index: 5;
411
+ bottom: 0px;
412
+ th,
413
+ td {
414
+ background-color: var(--muted);
415
+ font-family: var(--font-sans-accent);
416
+ font-weight: var(--font-weight-medium);
417
+ border-top-width: 1px;
418
+ }
419
+ }
420
+
421
+ /* Media */
422
+ :is(img, audio, video) {
423
+ border-width: 1px;
424
+ border-radius: var(--container-radius);
425
+ overflow: hidden;
426
+ max-width: 100%;
427
+ margin-inline: auto;
428
+ }
429
+
430
+ :is(audio, video)::-webkit-media-controls-enclosure {
431
+ border-radius: 0px;
432
+ }
433
+
434
+ video {
435
+ object-fit: cover;
436
+ }
437
+
438
+ /* Figure */
439
+ figure {
440
+ position: relative;
441
+ border-width: 1px;
442
+ border-radius: var(--container-radius);
443
+ overflow: hidden;
444
+ margin-inline: auto;
445
+ width: fit-content;
446
+ max-width: 100%;
447
+
448
+ &:not(:first-child) {
449
+ margin-top: calc(var(--spacing) * 4);
450
+ }
451
+
452
+ & > figcaption {
453
+ color: var(--muted-foreground);
454
+ margin: 0px;
455
+ padding: calc(var(--spacing) * 2);
456
+ text-align: center;
457
+ font-family: var(--font-sans-accent);
458
+ font-size: var(--text-sm);
459
+ font-weight: var(--font-weight-medium);
460
+ line-height: 1.5em;
461
+
462
+ &:first-child {
463
+ font-weight: var(--font-weight-bold);
464
+ border-bottom-width: 1px;
465
+ }
466
+ &:last-child {
467
+ border-top-width: 1px;
468
+ }
469
+ }
470
+
471
+ :is(img, audio, video, .bordered-enclosure) {
472
+ border-radius: 0;
473
+ border: none;
474
+ }
475
+
476
+ :is(img, video) {
477
+ object-fit: contain;
478
+ }
479
+ }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />
@@ -0,0 +1,38 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
+ "target": "ES2022",
5
+ "useDefineForClassFields": true,
6
+ "lib": [
7
+ "ES2022",
8
+ "DOM",
9
+ "DOM.Iterable"
10
+ ],
11
+ "module": "ESNext",
12
+ "skipLibCheck": true,
13
+ "baseUrl": ".",
14
+ "paths": {
15
+ "@/*": [
16
+ "./src/*"
17
+ ]
18
+ },
19
+ /* Bundler mode */
20
+ "moduleResolution": "bundler",
21
+ "allowImportingTsExtensions": true,
22
+ "verbatimModuleSyntax": true,
23
+ "moduleDetection": "force",
24
+ "noEmit": true,
25
+ "jsx": "react-jsx",
26
+ /* Linting */
27
+ "strict": true,
28
+ "noUnusedLocals": true,
29
+ "noUnusedParameters": true,
30
+ "erasableSyntaxOnly": true,
31
+ "noFallthroughCasesInSwitch": true,
32
+ "noUncheckedSideEffectImports": true
33
+ },
34
+ "include": [
35
+ "src",
36
+ ".ladle"
37
+ ],
38
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ {
5
+ "path": "./tsconfig.app.json"
6
+ },
7
+ {
8
+ "path": "./tsconfig.node.json"
9
+ }
10
+ ],
11
+ "compilerOptions": {
12
+ "baseUrl": ".",
13
+ "paths": {
14
+ "@/*": [
15
+ "./src/*"
16
+ ]
17
+ }
18
+ },
19
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "compilerOptions": {
3
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
+ "target": "ES2023",
5
+ "lib": ["ES2023"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+
9
+ /* Bundler mode */
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "verbatimModuleSyntax": true,
13
+ "moduleDetection": "force",
14
+ "noEmit": true,
15
+
16
+ /* Linting */
17
+ "strict": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "erasableSyntaxOnly": true,
21
+ "noFallthroughCasesInSwitch": true,
22
+ "noUncheckedSideEffectImports": true
23
+ },
24
+ "include": ["vite.config.ts"]
25
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,44 @@
1
+ import path from "path"
2
+ import { fileURLToPath } from "url"
3
+ import tailwindcss from "@tailwindcss/vite"
4
+ import { defineConfig } from 'vite'
5
+ import react from '@vitejs/plugin-react-swc'
6
+ import dts from 'vite-plugin-dts'
7
+
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+
10
+ // https://vite.dev/config/
11
+ export default defineConfig({
12
+ plugins: [react(), tailwindcss(), dts({ rollupTypes: true, tsconfigPath: './tsconfig.app.json' })],
13
+ resolve: {
14
+ alias: {
15
+ "@": path.resolve(__dirname, "./src"),
16
+ },
17
+ },
18
+ build: {
19
+ lib: {
20
+ formats: ['es'],
21
+ entry: {
22
+ 'ui-components': path.resolve(__dirname, 'src/components/ui/index.ts'),
23
+ 'button': path.resolve(__dirname, 'src/components/ui/button.tsx'),
24
+ 'card': path.resolve(__dirname, 'src/components/ui/card.tsx'),
25
+ 'caption': path.resolve(__dirname, 'src/components/ui/typography/caption.tsx'),
26
+ 'tag': path.resolve(__dirname, 'src/components/ui/tag.tsx'),
27
+ 'horizontal-list': path.resolve(__dirname, 'src/components/ui/horizontal-list.tsx'),
28
+ 'icon-generator': path.resolve(__dirname, 'src/components/ui/icon-generator/icon-generator.tsx'),
29
+ 'masked-image-generator': path.resolve(__dirname, 'src/components/ui/icon-generator/masked-image-generator.tsx'),
30
+ 'utils': path.resolve(__dirname, 'src/lib/utils.ts'),
31
+ },
32
+ name: 'ui-components',
33
+ },
34
+ rollupOptions: {
35
+ external: [
36
+ 'react',
37
+ 'react-dom/client',
38
+ 'react/jsx-dev-runtime',
39
+ 'tailwindcss',
40
+ 'tw-animate-css'
41
+ ],
42
+ },
43
+ },
44
+ })