@loword/loword-design-system 0.0.15 → 0.0.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"LDCarousel.d.ts","sourceRoot":"","sources":["../../../src/components/LDCarousel/LDCarousel.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAqB,EACnB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,sBAAsB;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrE,0DAA0D;IAC1D,UAAU,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACrC,sCAAsC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,8FAA8F;IAC9F,aAAa,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAC3C;+EAC2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,mCAAmC;IACnC,IAAI,CAAC,EAAE;QACL;8DACsD;QACtD,IAAI,EAAE,MAAM,CAAC;QACb,8EAA8E;QAC9E,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;KACtB,CAAC;IACF,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,QAAA,MAAM,UAAU;+MAmBb,eAAe;;;;;;;;;;CAsFjB,CAAC;AAYF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"LDCarousel.d.ts","sourceRoot":"","sources":["../../../src/components/LDCarousel/LDCarousel.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACrE,OAAqB,EACnB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,sBAAsB;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrE,0DAA0D;IAC1D,UAAU,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACrC,sCAAsC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,8FAA8F;IAC9F,aAAa,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAC3C;+EAC2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,mCAAmC;IACnC,IAAI,CAAC,EAAE;QACL;8DACsD;QACtD,IAAI,EAAE,MAAM,CAAC;QACb,8EAA8E;QAC9E,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;KACtB,CAAC;IACF,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,QAAA,MAAM,UAAU;+MAmBb,eAAe;;;;;;;;;;CAyFjB,CAAC;AAYF,eAAe,UAAU,CAAC"}
@@ -14,11 +14,9 @@ const LDCarousel = ({ slides, orientation = 'horizontal', loop = false, autoplay
14
14
  const columns = rows <= 1
15
15
  ? slides.map((_, i) => [i])
16
16
  : Array.from({ length: columnCount }, (_, col) => Array.from({ length: rows }, (_, row) => grid?.fill === 'col' ? col * rows + row : row * columnCount + col).filter((i) => i < slides.length));
17
- return (_jsx(CarouselBase.Root, { orientation: orientation, loop: loop, autoplay: autoplay, autoScroll: autoScroll, align: align, containScroll: containScroll, options: options, gap: gap, className: className, style: style, children: _jsxs("div", { className: "flex flex-col gap-3", children: [arrowPosition === 'top' && _jsx(CarouselBase.TopArrows, {}), _jsxs("div", { className: cn('flex items-center gap-3 w-full relative', isVertical && 'flex-col'), children: [arrowPosition === 'side' && _jsx(CarouselBase.Prev, {}), _jsx(CarouselBase.Viewport, { className: cn('w-full', viewportClassName), children: _jsx(CarouselBase.Container, { children: columns.map((column, i) => (_jsx(CarouselBase.Slide, { slidesPerView: slidesPerView, index: i, total: columns.length, className: slideClassName, children: rows <= 1 ? (slides[i]) : (
18
- // 트랙을 균등 분할해야 열이 달라도 같은 행이 같은 선상에서 시작한다.
19
- // (슬라이드끼리는 flex stretch로 이미 높이가 같음)
20
- // items-start: 위치만 맞추고 카드 높이는 콘텐츠대로 둔다.
21
- _jsx("div", { className: "grid h-full items-start", style: {
17
+ return (_jsx(CarouselBase.Root, { orientation: orientation, loop: loop, autoplay: autoplay, autoScroll: autoScroll, align: align, containScroll: containScroll, options: options, gap: gap, className: cn(arrowPosition === 'side' && !isVertical && 'ld-carousel--nav-gutter-x', className), style: style, children: _jsxs("div", { className: "flex flex-col gap-3", children: [arrowPosition === 'top' && _jsx(CarouselBase.TopArrows, {}), _jsxs("div", { className: cn('flex items-center gap-3 w-full relative', isVertical && 'flex-col', isVertical &&
18
+ arrowPosition === 'side' &&
19
+ 'ld-carousel__nav-clearance-y'), children: [arrowPosition === 'side' && _jsx(CarouselBase.Prev, {}), _jsx(CarouselBase.Viewport, { className: cn('w-full', viewportClassName), children: _jsx(CarouselBase.Container, { children: columns.map((column, i) => (_jsx(CarouselBase.Slide, { slidesPerView: slidesPerView, index: i, total: columns.length, className: slideClassName, children: rows <= 1 ? (slides[i]) : (_jsx("div", { className: "grid h-full items-start", style: {
22
20
  gridTemplateRows: `repeat(${rows}, minmax(0, 1fr))`,
23
21
  rowGap: gap,
24
22
  }, children: column.map((slideIndex) => (_jsx(Fragment, { children: slides[slideIndex] }, slideIndex))) })) }, i))) }) }), arrowPosition === 'side' && _jsx(CarouselBase.Next, {})] }), (showDots || showCounter) && (_jsxs("div", { className: "flex items-center justify-center gap-3", children: [showDots && (_jsx(CarouselBase.Dots, { className: isVertical ? 'flex-col' : undefined })), showCounter && _jsx(CarouselBase.Counter, {})] }))] }) }));
package/dist/index.css CHANGED
@@ -5402,6 +5402,15 @@
5402
5402
  }
5403
5403
  }
5404
5404
  @layer components {
5405
+ .ld-carousel {
5406
+ --ld-carousel-nav-size: 50px;
5407
+ }
5408
+ .ld-carousel--nav-gutter-x {
5409
+ padding-inline: calc(var(--ld-carousel-nav-size) / 2);
5410
+ }
5411
+ .ld-carousel__nav-clearance-y {
5412
+ margin-block: calc(var(--ld-carousel-nav-size) / 2);
5413
+ }
5405
5414
  .ld-carousel__viewport {
5406
5415
  overflow: hidden;
5407
5416
  }
@@ -5409,6 +5418,9 @@
5409
5418
  height: 100%;
5410
5419
  }
5411
5420
  .ld-carousel__nav {
5421
+ position: absolute;
5422
+ top: 50%;
5423
+ z-index: 10;
5412
5424
  display: flex;
5413
5425
  align-items: center;
5414
5426
  justify-content: center;
@@ -5416,16 +5428,15 @@
5416
5428
  cursor: pointer;
5417
5429
  border-radius: 9999px;
5418
5430
  flex-shrink: 0;
5419
- width: 50px;
5420
- height: 50px;
5431
+ width: var(--ld-carousel-nav-size);
5432
+ height: var(--ld-carousel-nav-size);
5421
5433
  transition: all 300ms ease-out;
5422
5434
  --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
5423
5435
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
5424
5436
  }
5425
5437
  @media (max-width: calc(768px - 1px)) {
5426
- .ld-carousel__nav {
5427
- width: 40px;
5428
- height: 40px;
5438
+ .ld-carousel {
5439
+ --ld-carousel-nav-size: 40px;
5429
5440
  }
5430
5441
  .ld-carousel__nav svg {
5431
5442
  width: 20px;
@@ -5433,29 +5444,29 @@
5433
5444
  }
5434
5445
  }
5435
5446
  .ld-carousel__nav:disabled {
5436
- opacity: 0.4;
5437
5447
  cursor: not-allowed;
5448
+ color: var(--color-neutral400);
5438
5449
  }
5439
5450
  .ld-carousel__nav:first-child {
5440
- left: -1%;
5451
+ left: 0;
5452
+ transform: translate(-50%, -50%);
5441
5453
  }
5442
5454
  .ld-carousel__nav:last-child {
5443
- right: -1%;
5444
- }
5445
- .ld-carousel__nav--vertical {
5446
- transform: translateX(-50%);
5455
+ right: 0;
5456
+ transform: translate(50%, -50%);
5447
5457
  }
5448
5458
  .ld-carousel__nav--vertical:first-child {
5449
- top: -1%;
5450
- bottom: auto;
5459
+ top: 0;
5451
5460
  left: 50%;
5452
5461
  right: auto;
5462
+ transform: translate(-50%, -50%);
5453
5463
  }
5454
5464
  .ld-carousel__nav--vertical:last-child {
5455
5465
  top: auto;
5456
- bottom: -1%;
5466
+ bottom: 0;
5457
5467
  left: 50%;
5458
5468
  right: auto;
5469
+ transform: translate(-50%, 50%);
5459
5470
  }
5460
5471
  }
5461
5472
  @property --tw-translate-x {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loword/loword-design-system",
3
- "version": "0.0.15",
3
+ "version": "0.0.16",
4
4
  "description": "로워드 디자인 시스템 컴포넌트 패키지(Tailwind v4)",
5
5
  "keywords": [
6
6
  "react",
@@ -1,4 +1,16 @@
1
1
  @layer components {
2
+ .ld-carousel {
3
+ --ld-carousel-nav-size: 50px;
4
+ }
5
+
6
+ .ld-carousel--nav-gutter-x {
7
+ padding-inline: calc(var(--ld-carousel-nav-size) / 2);
8
+ }
9
+
10
+ .ld-carousel__nav-clearance-y {
11
+ margin-block: calc(var(--ld-carousel-nav-size) / 2);
12
+ }
13
+
2
14
  .ld-carousel__viewport {
3
15
  overflow: hidden;
4
16
  }
@@ -8,6 +20,9 @@
8
20
  }
9
21
 
10
22
  .ld-carousel__nav {
23
+ position: absolute;
24
+ top: 50%;
25
+ z-index: 10;
11
26
  display: flex;
12
27
  align-items: center;
13
28
  justify-content: center;
@@ -15,16 +30,15 @@
15
30
  cursor: pointer;
16
31
  border-radius: 9999px;
17
32
  flex-shrink: 0;
18
- width: 50px;
19
- height: 50px;
33
+ width: var(--ld-carousel-nav-size);
34
+ height: var(--ld-carousel-nav-size);
20
35
  transition: all 300ms ease-out;
21
36
  @apply shadow-lg;
22
37
  }
23
38
 
24
39
  @variant mobile {
25
- .ld-carousel__nav {
26
- width: 40px;
27
- height: 40px;
40
+ .ld-carousel {
41
+ --ld-carousel-nav-size: 40px;
28
42
  }
29
43
 
30
44
  .ld-carousel__nav svg {
@@ -34,33 +48,32 @@
34
48
  }
35
49
 
36
50
  .ld-carousel__nav:disabled {
37
- opacity: 0.4;
38
51
  cursor: not-allowed;
52
+ color: var(--color-neutral400);
39
53
  }
40
54
 
41
55
  .ld-carousel__nav:first-child {
42
- left: -1%;
56
+ left: 0;
57
+ transform: translate(-50%, -50%);
43
58
  }
44
59
 
45
60
  .ld-carousel__nav:last-child {
46
- right: -1%;
47
- }
48
-
49
- .ld-carousel__nav--vertical {
50
- transform: translateX(-50%);
61
+ right: 0;
62
+ transform: translate(50%, -50%);
51
63
  }
52
64
 
53
65
  .ld-carousel__nav--vertical:first-child {
54
- top: -1%;
55
- bottom: auto;
66
+ top: 0;
56
67
  left: 50%;
57
68
  right: auto;
69
+ transform: translate(-50%, -50%);
58
70
  }
59
71
 
60
72
  .ld-carousel__nav--vertical:last-child {
61
73
  top: auto;
62
- bottom: -1%;
74
+ bottom: 0;
63
75
  left: 50%;
64
76
  right: auto;
77
+ transform: translate(-50%, 50%);
65
78
  }
66
79
  }