boottent-design 0.1.233 → 0.1.235

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.
package/README.md CHANGED
@@ -7,6 +7,7 @@
7
7
  - [시작하기](#시작하기)
8
8
  - [설치](#설치)
9
9
  - [빠른 사용법 (Tailwind 설정 불필요)](#빠른-사용법-tailwind-설정-불필요)
10
+ - [Tailwind 앱 권장 사용법](#tailwind-앱-권장-사용법)
10
11
  - [성능 권장 import](#성능-권장-import)
11
12
  - [모듈 import 경로](#모듈-import-경로)
12
13
  - [제작 및 배포](#제작-및-배포)
@@ -36,6 +37,9 @@ npm install boottent-design@latest
36
37
  Tailwind를 직접 설치하거나 `tailwind.config`를 수정하지 않아도 됩니다.
37
38
  라이브러리에서 미리 빌드된 CSS를 함께 제공하므로, 아래 2단계만 하면 동작합니다.
38
39
 
40
+ 이 방식은 Tailwind를 쓰지 않는 앱이나 빠른 프로토타이핑에 적합합니다.
41
+ Tailwind를 직접 운영하는 앱에서는 아래의 `Tailwind 앱 권장 사용법`을 사용하세요.
42
+
39
43
  1. 앱 엔트리에서 스타일 1회 임포트
40
44
 
41
45
  ```tsx
@@ -61,6 +65,39 @@ export function Sample() {
61
65
  }
62
66
  ```
63
67
 
68
+ ### Tailwind 앱 권장 사용법
69
+
70
+ Tailwind를 직접 운영하는 앱에서는 `styles.css` 대신 `foundation.css`와 `tailwind-preset`을 사용하세요.
71
+ 이 방식은 유틸 클래스를 앱 CSS에서 한 번만 생성하게 만들어, 디자인시스템 CSS와 앱 CSS 간 우선순위 충돌을 막습니다.
72
+
73
+ 1. 앱 엔트리에서 foundation CSS 1회 임포트
74
+
75
+ ```tsx
76
+ import "boottent-design/foundation.css";
77
+ import "./index.css";
78
+ ```
79
+
80
+ 2. `tailwind.config`에서 preset과 content를 추가
81
+
82
+ ```ts
83
+ const boottentDesignTailwindPreset = require("boottent-design/tailwind-preset");
84
+
85
+ module.exports = {
86
+ content: ["./src/**/*.{ts,tsx}", "./node_modules/boottent-design/dist/**/*.{js,cjs,mjs}"],
87
+ presets: [boottentDesignTailwindPreset],
88
+ };
89
+ ```
90
+
91
+ 3. 필요한 모듈 import 후 바로 사용
92
+
93
+ ```tsx
94
+ import { EventCard } from "boottent-design/components";
95
+
96
+ export function Sample() {
97
+ return <EventCard {...props} />;
98
+ }
99
+ ```
100
+
64
101
  ### 성능 권장 import
65
102
 
66
103
  소비자 앱 빌드 시간을 줄이려면 배럴 import보다 deep import를 권장합니다.
@@ -83,11 +120,15 @@ export function Sample() {
83
120
  - `boottent-design/ui`
84
121
  - `boottent-design/ui/*`
85
122
  - `boottent-design/tokens`
123
+ - `boottent-design/components`
124
+ - `boottent-design/components/*`
125
+ - `boottent-design/foundation.css`
126
+ - `boottent-design/tailwind-preset`
86
127
 
87
128
  ### 참고
88
129
 
89
- - 기존처럼 소비자 프로젝트에서 Tailwind를 직접 운영해도 됩니다.
90
- - 다만 `boottent-design`을 사용하기 위해 Tailwind 설정이 필수는 아닙니다.
130
+ - Tailwind를 직접 운영하는 소비자 앱은 `styles.css` 대신 `foundation.css + tailwind-preset` 조합을 권장합니다.
131
+ - `styles.css`는 Tailwind 미사용 소비자를 위한 올인원 엔트리로 계속 유지됩니다.
91
132
 
92
133
  ## 제작 및 배포
93
134
 
package/dist/DESIGN.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지**
5
- > 생성 일시: 2026. 4. 28. 오후 4:35:08
6
- > 원본 소스: boottent-design v0.1.232
5
+ > 생성 일시: 2026. 5. 4. 오전 10:50:49
6
+ > 원본 소스: boottent-design v0.1.234
7
7
 
8
8
  ## 1. 개요 (Overview)
9
9
 
@@ -97,28 +97,12 @@ Stitch(AI 디자인 도구)와 Claude Code(AI 코딩 에이전트)는 이 파일
97
97
 
98
98
  ### 2.2 타이포그래피 (Typography)
99
99
  ```javascript
100
- {
101
- bold30: ["30px", { lineHeight: "38px", fontWeight: "700" }],
102
- bold24: ["24px", { lineHeight: "32px", fontWeight: "700" }],
103
- bold20: ["20px", { lineHeight: "28px", fontWeight: "700" }],
104
- semibold18: ["18px", { lineHeight: "26px", fontWeight: "600" }],
105
- semibold16: ["16px", { lineHeight: "24px", fontWeight: "600" }],
106
- semibold15: ["15px", { lineHeight: "23px", fontWeight: "600" }],
107
- semibold14: ["14px", { lineHeight: "20px", fontWeight: "600" }],
108
- semibold13: ["13px", { lineHeight: "19px", fontWeight: "600" }],
109
- semibold12: ["12px", { lineHeight: "16px", fontWeight: "600" }],
110
- medium16: ["16px", { lineHeight: "24px", fontWeight: "500" }],
111
- medium14: ["14px", { lineHeight: "20px", fontWeight: "500" }],
112
- regular16: ["16px", { lineHeight: "24px", fontWeight: "400" }],
113
- regular14: ["14px", { lineHeight: "20px", fontWeight: "400" }],
114
- regular13: ["13px", { lineHeight: "19px", fontWeight: "400" }],
115
- regular12: ["12px", { lineHeight: "16px", fontWeight: "400" }],
116
- }
100
+ {}
117
101
  ```
118
102
 
119
103
  ### 2.3 기타 토큰
120
- - **Border Radius**: `{ lg: "var(--radius)", md: "calc(var(--radius) - 2px)", sm: "calc(var(--radius) - 4px)", }`
121
- - **Screens**: `{ "2xl": "1400px", }`
104
+ - **Border Radius**: `default Tailwind radius`
105
+ - **Screens**: `default Tailwind screens`
122
106
  - **Spacing**: 기본 Tailwind Spacing 스케일 사용 (4px 단위)
123
107
 
124
108
  ---
@@ -1643,9 +1627,10 @@ import { cn }
1643
1627
  {
1644
1628
  // size : padding, border-radius, 텍스트 크기
1645
1629
  size: {
1646
- sm: "px-2 py-1 text-xs font-normal rounded",
1630
+ sm: "px-2 py-1 text-xs font-normal rounded-sm",
1647
1631
  md: "px-2.5 py-1 text-sm font-normal rounded-md",
1648
1632
  lg: "px-3.5 py-1.5 text-base font-medium rounded-lg",
1633
+ ad: "absolute top-0 right-0 px-2.5 py-1 rounded-t-none rounded-br-none rounded-bl-xl text-sm font-normal",
1649
1634
  },
1650
1635
  // shape : round, square, adCard
1651
1636
  shape: {
@@ -1654,7 +1639,7 @@ import { cn }
1654
1639
  },
1655
1640
  // variant : solid과 outline을 결합하여 하나의 값으로 처리
1656
1641
  variant: {
1657
- ad: "rounded-t-none rounded-br-none rounded-bl-xl text-sm font-normal px-2.5 py-1 absolute top-0 right-0 bg-grey-800 text-white",
1642
+ ad: "bg-grey-800 text-white",
1658
1643
  "solid-primary-50": "bg-main-50 text-main-600",
1659
1644
  "solid-primary-100": "bg-main-100 text-main-600",
1660
1645
  "solid-primary-600": "bg-main-600 text-main-50",
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../event-card-P9DJCupH.cjs");exports.EventCard=e.EventCard;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../event-card-DwnP_Qsj.cjs");exports.EventCard=e.EventCard;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { E as t } from "../event-card-DeIzR5uk.js";
2
+ import { E as t } from "../event-card-DCs6nu0G.js";
3
3
  export {
4
4
  t as EventCard
5
5
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../premium-card-BbkNnfVA.cjs");exports.PremiumCard=e.PremiumCard;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../premium-card-Dk-pTOyb.cjs");exports.PremiumCard=e.PremiumCard;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { P as m } from "../premium-card-B0RyOTbr.js";
2
+ import { P as m } from "../premium-card-BOlG7ZZG.js";
3
3
  export {
4
4
  m as PremiumCard
5
5
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../title-tag-card-C-pn0u7P.cjs");exports.TitleTagCard=e.TitleTagCard;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../title-tag-card-kzgE6S3R.cjs");exports.TitleTagCard=e.TitleTagCard;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { T as r } from "../title-tag-card-CoPGtka1.js";
2
+ import { T as r } from "../title-tag-card-CCInX94f.js";
3
3
  export {
4
4
  r as TitleTagCard
5
5
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./event-card-P9DJCupH.cjs"),r=require("./main-banner-image-Ce2c6ODO.cjs"),t=require("./premium-card-BbkNnfVA.cjs"),n=require("./title-tag-card-C-pn0u7P.cjs"),a=require("./article-asset-card-CuTpHnoq.cjs"),s=require("./environment-asset-photo-DMSQ1Ext.cjs"),i=require("./event-asset-banner-I7Wv47iX.cjs"),o=require("./lecturer-card-DLMnM4fU.cjs"),d=require("./portfolio-asset-card-DVhoypCN.cjs");exports.EventCard=e.EventCard;exports.MainBannerImage=r.MainBannerImage;exports.PremiumCard=t.PremiumCard;exports.TitleTagCard=n.TitleTagCard;exports.ArticleAssetCard=a.ArticleAssetCard;exports.EnvironmentAssetPhoto=s.EnvironmentAssetPhoto;exports.EventAssetBanner=i.EventAssetBanner;exports.LecturerCard=o.LecturerCard;exports.PortfolioAssetCard=d.PortfolioAssetCard;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./event-card-DwnP_Qsj.cjs"),r=require("./main-banner-image-Ce2c6ODO.cjs"),t=require("./premium-card-Dk-pTOyb.cjs"),n=require("./title-tag-card-kzgE6S3R.cjs"),a=require("./article-asset-card-CuTpHnoq.cjs"),s=require("./environment-asset-photo-DMSQ1Ext.cjs"),i=require("./event-asset-banner-I7Wv47iX.cjs"),o=require("./lecturer-card-DLMnM4fU.cjs"),d=require("./portfolio-asset-card-DVhoypCN.cjs");exports.EventCard=e.EventCard;exports.MainBannerImage=r.MainBannerImage;exports.PremiumCard=t.PremiumCard;exports.TitleTagCard=n.TitleTagCard;exports.ArticleAssetCard=a.ArticleAssetCard;exports.EnvironmentAssetPhoto=s.EnvironmentAssetPhoto;exports.EventAssetBanner=i.EventAssetBanner;exports.LecturerCard=o.LecturerCard;exports.PortfolioAssetCard=d.PortfolioAssetCard;
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { E as o } from "./event-card-DeIzR5uk.js";
2
+ import { E as o } from "./event-card-DCs6nu0G.js";
3
3
  import { M as a } from "./main-banner-image-Cwwt6xKE.js";
4
- import { P as m } from "./premium-card-B0RyOTbr.js";
5
- import { T as f } from "./title-tag-card-CoPGtka1.js";
4
+ import { P as m } from "./premium-card-BOlG7ZZG.js";
5
+ import { T as f } from "./title-tag-card-CCInX94f.js";
6
6
  import { A as x } from "./article-asset-card-B30fjI_9.js";
7
7
  import { E as d } from "./environment-asset-photo-Dk8pKTD3.js";
8
8
  import { E as C } from "./event-asset-banner-DLK5HF29.js";
@@ -1,8 +1,8 @@
1
- import { jsx as e, jsxs as m } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import { a as t } from "./index-DWvwbdTU.js";
3
- import { c } from "./common-C3JaD1vJ.js";
4
3
  import "./ui/accordion.es.js";
5
4
  import "./ui/alert-dialog.es.js";
5
+ import { c } from "./common-C3JaD1vJ.js";
6
6
  import "@radix-ui/react-aspect-ratio";
7
7
  import "./ui/avatar.es.js";
8
8
  import "./ui/badge.es.js";
@@ -27,7 +27,7 @@ import "./ui/radio-group.es.js";
27
27
  import "./ui/scroll-area.es.js";
28
28
  import "./ui/select.es.js";
29
29
  import "./ui/separator.es.js";
30
- import { Skeleton as l } from "./ui/skeleton.es.js";
30
+ import { Skeleton as a } from "./ui/skeleton.es.js";
31
31
  import "@radix-ui/react-slider";
32
32
  import "react";
33
33
  import "./ui/switch.es.js";
@@ -42,11 +42,11 @@ import "./ui/tooltip.es.js";
42
42
  import { g as v, a as b, b as y } from "./utils-DMV7dwIW.js";
43
43
  function se({
44
44
  adProduct: r,
45
- logo: i,
45
+ logo: m,
46
46
  title: o,
47
47
  batchName: p = "",
48
48
  adTitle: n,
49
- startDate: a,
49
+ startDate: l,
50
50
  tuition: d,
51
51
  nbCardRequired: f,
52
52
  isLoading: x = !1,
@@ -55,11 +55,11 @@ function se({
55
55
  }) {
56
56
  if (x)
57
57
  return /* @__PURE__ */ e(N, { className: s });
58
- const h = `${v(a)} 개강 · ${b(d, f)}`;
58
+ const h = `${v(l)} 개강 · ${b(d, f)}`;
59
59
  return /* @__PURE__ */ e(
60
60
  w,
61
61
  {
62
- logo: i,
62
+ logo: m,
63
63
  title: `${o} ${p}`,
64
64
  adTitle: n,
65
65
  footerText: h,
@@ -71,14 +71,14 @@ function se({
71
71
  }
72
72
  function w({
73
73
  adProduct: r,
74
- logo: i,
74
+ logo: m,
75
75
  title: o,
76
76
  adTitle: p,
77
77
  footerText: n,
78
- regEndDate: a,
78
+ regEndDate: l,
79
79
  className: d
80
80
  }) {
81
- return /* @__PURE__ */ m(
81
+ return /* @__PURE__ */ i(
82
82
  "div",
83
83
  {
84
84
  className: c(
@@ -90,15 +90,16 @@ function w({
90
90
  u,
91
91
  {
92
92
  variant: "ad",
93
+ size: "ad",
93
94
  style: {
94
95
  background: t.event.background,
95
96
  color: t.event.color
96
97
  },
97
- children: r === t.dDay.value && a ? y(a) : t.event.value.toUpperCase()
98
+ children: r === t.dDay.value && l ? y(l) : t.event.value.toUpperCase()
98
99
  }
99
100
  ),
100
- /* @__PURE__ */ e("img", { src: i, alt: `${o} 로고`, className: "h-4 object-contain", loading: "lazy" }),
101
- /* @__PURE__ */ m("div", { className: "flex w-full flex-col items-start gap-2", children: [
101
+ /* @__PURE__ */ e("img", { src: m, alt: `${o} 로고`, className: "h-4 object-contain", loading: "lazy" }),
102
+ /* @__PURE__ */ i("div", { className: "flex w-full flex-col items-start gap-2", children: [
102
103
  /* @__PURE__ */ e("h3", { className: "line-clamp-2 h-auto text-sm font-normal md:text-base lg:h-12", title: o, children: o }),
103
104
  /* @__PURE__ */ e("p", { className: "line-clamp-2 h-auto w-full break-keep rounded bg-grey-100 px-2 py-1 text-[13px] font-semibold text-grey-600 md:h-[54px] md:text-[15px] md:text-grey-800", children: p }),
104
105
  /* @__PURE__ */ e("div", { className: "text-[13px] leading-[19px] text-grey-600", children: n })
@@ -108,8 +109,8 @@ function w({
108
109
  );
109
110
  }
110
111
  function N({ className: r }) {
111
- return /* @__PURE__ */ m(
112
- l,
112
+ return /* @__PURE__ */ i(
113
+ a,
113
114
  {
114
115
  type: "background",
115
116
  className: c(
@@ -129,12 +130,12 @@ function N({ className: r }) {
129
130
  children: ""
130
131
  }
131
132
  ),
132
- /* @__PURE__ */ e(l, { className: "h-4 w-1/2" }),
133
- /* @__PURE__ */ m("div", { className: "flex flex-col items-start gap-2", children: [
134
- /* @__PURE__ */ e("div", { className: "h-10 w-full", children: /* @__PURE__ */ e(l, { className: "h-5 w-4/5" }) }),
135
- /* @__PURE__ */ e(l, { className: "h-14 w-full" })
133
+ /* @__PURE__ */ e(a, { className: "h-4 w-1/2" }),
134
+ /* @__PURE__ */ i("div", { className: "flex flex-col items-start gap-2", children: [
135
+ /* @__PURE__ */ e("div", { className: "h-10 w-full", children: /* @__PURE__ */ e(a, { className: "h-5 w-4/5" }) }),
136
+ /* @__PURE__ */ e(a, { className: "h-14 w-full" })
136
137
  ] }),
137
- /* @__PURE__ */ e(l, { className: "mt-2 h-[19px] w-2/3" })
138
+ /* @__PURE__ */ e(a, { className: "mt-2 h-[19px] w-2/3" })
138
139
  ]
139
140
  }
140
141
  );
@@ -0,0 +1 @@
1
+ "use strict";const e=require("react/jsx-runtime"),r=require("./index-B8SY6s5B.cjs");require("./ui/accordion.cjs.js");require("./ui/alert-dialog.cjs.js");const x=require("./common-Ds1lanOg.cjs");require("@radix-ui/react-aspect-ratio");require("./ui/avatar.cjs.js");require("./ui/badge.cjs.js");require("./ui/button.cjs.js");require("./ui/calendar.cjs.js");require("./ui/callout.cjs.js");require("./ui/card.cjs.js");require("./ui/checkbox.cjs.js");require("lucide-react");require("./ui/command.cjs.js");require("./ui/dialog.cjs.js");require("./ui/dropdown-menu.cjs.js");require("./ui/file-uploader.cjs.js");require("./ui/form.cjs.js");require("./ui/input.cjs.js");require("./ui/label.cjs.js");require("./ui/month-picker.cjs.js");require("./ui/multi-select.cjs.js");require("./ui/navigation-menu.cjs.js");require("./ui/popover.cjs.js");require("./ui/radio-group.cjs.js");require("./ui/scroll-area.cjs.js");require("./ui/select.cjs.js");require("./ui/separator.cjs.js");const i=require("./ui/skeleton.cjs.js");require("@radix-ui/react-slider");require("react");require("./ui/switch.cjs.js");require("./ui/tabs.cjs.js");const q=require("./ui/tag.cjs.js");require("./ui/text.cjs.js");require("./ui/textarea.cjs.js");require("./ui/toast.cjs.js");require("./ui/toggle.cjs.js");require("./ui/toggle-group.cjs.js");require("./ui/tooltip.cjs.js");const o=require("./utils-CQ8Ml7W5.cjs");function h({adProduct:t,logo:s,title:l,batchName:a="",adTitle:n,startDate:u,tuition:d,nbCardRequired:m,isLoading:g=!1,regEndDate:p,className:c}){if(g)return e.jsx(j,{className:c});const f=`${o.getCampDateText(u)} 개강 · ${o.getEventCampCostValue(d,m)}`;return e.jsx(v,{logo:s,title:`${l} ${a}`,adTitle:n,footerText:f,regEndDate:p,className:c,adProduct:t})}function v({adProduct:t,logo:s,title:l,adTitle:a,footerText:n,regEndDate:u,className:d}){return e.jsxs("div",{className:x.cn("relative z-10 flex h-full w-full flex-col items-start justify-between gap-2 overflow-hidden rounded-xl border border-grey-200 bg-white p-4 text-grey-800 md:p-5 lg:p-6",d),children:[e.jsx(q.Tag,{variant:"ad",size:"ad",style:{background:r.adProducts.event.background,color:r.adProducts.event.color},children:t===r.adProducts.dDay.value&&u?o.getCampDdayText(u):r.adProducts.event.value.toUpperCase()}),e.jsx("img",{src:s,alt:`${l} 로고`,className:"h-4 object-contain",loading:"lazy"}),e.jsxs("div",{className:"flex w-full flex-col items-start gap-2",children:[e.jsx("h3",{className:"line-clamp-2 h-auto text-sm font-normal md:text-base lg:h-12",title:l,children:l}),e.jsx("p",{className:"line-clamp-2 h-auto w-full break-keep rounded bg-grey-100 px-2 py-1 text-[13px] font-semibold text-grey-600 md:h-[54px] md:text-[15px] md:text-grey-800",children:a}),e.jsx("div",{className:"text-[13px] leading-[19px] text-grey-600",children:n})]})]})}function j({className:t}){return e.jsxs(i.Skeleton,{type:"background",className:x.cn("relative z-10 flex h-full w-full flex-col justify-between gap-2 overflow-hidden rounded-xl p-4 md:p-5 lg:p-6",t),children:[e.jsx(q.Tag,{variant:"ad",style:{background:r.adProducts.event.background,color:r.adProducts.event.color},className:"h-7 w-20 animate-pulse rounded-bl-lg rounded-br-none rounded-tl-none rounded-tr-lg px-2 py-1 text-sm",children:""}),e.jsx(i.Skeleton,{className:"h-4 w-1/2"}),e.jsxs("div",{className:"flex flex-col items-start gap-2",children:[e.jsx("div",{className:"h-10 w-full",children:e.jsx(i.Skeleton,{className:"h-5 w-4/5"})}),e.jsx(i.Skeleton,{className:"h-14 w-full"})]}),e.jsx(i.Skeleton,{className:"mt-2 h-[19px] w-2/3"})]})}exports.EventCard=h;
@@ -0,0 +1,89 @@
1
+ @font-face {
2
+ font-family: "Pretendard";
3
+ src:
4
+ url("https://cdn.jsdelivr.net/npm/pretendard/dist/web/static/pretendard.woff2") format("woff2"),
5
+ url("https://cdn.jsdelivr.net/npm/pretendard/dist/web/static/pretendard.woff") format("woff");
6
+ font-weight: 100 900;
7
+ font-display: swap;
8
+ }
9
+
10
+ :root {
11
+ --background: #ffffff;
12
+ --foreground: #26282a;
13
+ --card: 0 0% 100%;
14
+ --card-foreground: 224 71.4% 4.1%;
15
+ --popover: 0 0% 100%;
16
+ --popover-foreground: 224 71.4% 4.1%;
17
+ --primary: #7344e3;
18
+ --primary-foreground: #ffffff;
19
+ --secondary: #26282a;
20
+ --secondary-foreground: #ffffff;
21
+ --muted: #a2a3a4;
22
+ --muted-foreground: #ffffff;
23
+ --muted-border: #dde2e6;
24
+ --accent: #3a8af1;
25
+ --accent-foreground: 220.9 39.3% 11%;
26
+ --destructive: #e91927;
27
+ --destructive-foreground: 210 20% 98%;
28
+ --border: #dde2e6;
29
+ --input: 220 13% 91%;
30
+ --ring: 224 71.4% 4.1%;
31
+ --radius: 0.5rem;
32
+ }
33
+
34
+ .dark {
35
+ --background: 224 71.4% 4.1%;
36
+ --foreground: 210 20% 98%;
37
+ --card: 224 71.4% 4.1%;
38
+ --card-foreground: 210 20% 98%;
39
+ --popover: 224 71.4% 4.1%;
40
+ --popover-foreground: 210 20% 98%;
41
+ --primary: 210 20% 98%;
42
+ --primary-foreground: 220.9 39.3% 11%;
43
+ --secondary: 215 27.9% 16.9%;
44
+ --secondary-foreground: 210 20% 98%;
45
+ --muted: 215 27.9% 16.9%;
46
+ --muted-foreground: 217.9 10.6% 64.9%;
47
+ --accent: 215 27.9% 16.9%;
48
+ --accent-foreground: 210 20% 98%;
49
+ --destructive: 0 62.8% 30.6%;
50
+ --destructive-foreground: 210 20% 98%;
51
+ --border: 215 27.9% 16.9%;
52
+ --input: 215 27.9% 16.9%;
53
+ --ring: 216 12.2% 83.9%;
54
+ }
55
+
56
+ .scrollbar-hidden {
57
+ -ms-overflow-style: none;
58
+ scrollbar-width: none;
59
+ }
60
+
61
+ .scrollbar-hidden::-webkit-scrollbar {
62
+ display: none;
63
+ }
64
+
65
+ .truncate-none {
66
+ overflow: visible;
67
+ display: block;
68
+ }
69
+
70
+ .truncate1,
71
+ .truncate2,
72
+ .truncate3 {
73
+ width: 100%;
74
+ overflow: hidden;
75
+ display: -webkit-box;
76
+ -webkit-box-orient: vertical;
77
+ }
78
+
79
+ .truncate1 {
80
+ -webkit-line-clamp: 1;
81
+ }
82
+
83
+ .truncate2 {
84
+ -webkit-line-clamp: 2;
85
+ }
86
+
87
+ .truncate3 {
88
+ -webkit-line-clamp: 3;
89
+ }
@@ -1,8 +1,8 @@
1
1
  import { jsxs as e, jsx as r } from "react/jsx-runtime";
2
2
  import { a as d } from "./index-DWvwbdTU.js";
3
- import { c as n } from "./common-C3JaD1vJ.js";
4
3
  import "./ui/accordion.es.js";
5
4
  import "./ui/alert-dialog.es.js";
5
+ import { c as n } from "./common-C3JaD1vJ.js";
6
6
  import "@radix-ui/react-aspect-ratio";
7
7
  import "./ui/avatar.es.js";
8
8
  import "./ui/badge.es.js";
@@ -39,12 +39,12 @@ import "./ui/toast.es.js";
39
39
  import "./ui/toggle.es.js";
40
40
  import "./ui/toggle-group.es.js";
41
41
  import "./ui/tooltip.es.js";
42
- function ir({
43
- logo: i,
42
+ function lr({
43
+ logo: l,
44
44
  title: a,
45
45
  subtitle: o,
46
46
  thumbnail: p,
47
- batchTitle: l,
47
+ batchTitle: i,
48
48
  batchName: s = "",
49
49
  brandName: c,
50
50
  tag: x,
@@ -65,6 +65,7 @@ function ir({
65
65
  /* @__PURE__ */ r(
66
66
  u,
67
67
  {
68
+ size: "ad",
68
69
  variant: "ad",
69
70
  style: {
70
71
  background: d.premiumCard.background,
@@ -77,9 +78,9 @@ function ir({
77
78
  t ? /* @__PURE__ */ r(w, {}) : /* @__PURE__ */ r(
78
79
  h,
79
80
  {
80
- logo: i,
81
+ logo: l,
81
82
  brandName: c,
82
- batchTitle: l,
83
+ batchTitle: i,
83
84
  batchName: s,
84
85
  subtitle: o,
85
86
  thumbnail: p
@@ -90,15 +91,15 @@ function ir({
90
91
  );
91
92
  }
92
93
  function h({
93
- logo: i,
94
+ logo: l,
94
95
  brandName: a,
95
96
  batchTitle: o,
96
97
  batchName: p,
97
- subtitle: l,
98
+ subtitle: i,
98
99
  thumbnail: s
99
100
  }) {
100
101
  return /* @__PURE__ */ e("div", { className: "flex h-full flex-col items-start justify-start gap-2", children: [
101
- /* @__PURE__ */ r("img", { src: i, alt: `${a} 로고`, className: "h-4 object-contain", loading: "lazy" }),
102
+ /* @__PURE__ */ r("img", { src: l, alt: `${a} 로고`, className: "h-4 object-contain", loading: "lazy" }),
102
103
  /* @__PURE__ */ e("div", { className: "flex w-full flex-row items-start justify-between gap-6", children: [
103
104
  /* @__PURE__ */ e("div", { className: "flex h-full grow flex-col items-start justify-between gap-2 pb-2", children: [
104
105
  /* @__PURE__ */ e("h3", { className: "line-clamp-2 h-auto text-sm font-normal md:h-12 md:text-base", children: [
@@ -110,8 +111,8 @@ function h({
110
111
  "h4",
111
112
  {
112
113
  className: "line-clamp-2 max-h-[56px] w-full break-keep rounded bg-grey-100 px-2 py-1 text-[13px] font-semibold text-grey-600 md:text-[15px] md:text-grey-800",
113
- title: l,
114
- children: l
114
+ title: i,
115
+ children: i
115
116
  }
116
117
  )
117
118
  ] }),
@@ -140,5 +141,5 @@ function w() {
140
141
  ] });
141
142
  }
142
143
  export {
143
- ir as P
144
+ lr as P
144
145
  };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("react/jsx-runtime"),x=require("./index-B8SY6s5B.cjs");require("./ui/accordion.cjs.js");require("./ui/alert-dialog.cjs.js");const d=require("./common-Ds1lanOg.cjs");require("@radix-ui/react-aspect-ratio");require("./ui/avatar.cjs.js");require("./ui/badge.cjs.js");require("./ui/button.cjs.js");require("./ui/calendar.cjs.js");require("./ui/callout.cjs.js");require("./ui/card.cjs.js");require("./ui/checkbox.cjs.js");require("lucide-react");require("./ui/command.cjs.js");require("./ui/dialog.cjs.js");require("./ui/dropdown-menu.cjs.js");require("./ui/file-uploader.cjs.js");require("./ui/form.cjs.js");require("./ui/input.cjs.js");require("./ui/label.cjs.js");require("./ui/month-picker.cjs.js");require("./ui/multi-select.cjs.js");require("./ui/navigation-menu.cjs.js");require("./ui/popover.cjs.js");require("./ui/radio-group.cjs.js");require("./ui/scroll-area.cjs.js");require("./ui/select.cjs.js");require("./ui/separator.cjs.js");const s=require("./ui/skeleton.cjs.js");require("@radix-ui/react-slider");require("react");require("./ui/switch.cjs.js");require("./ui/tabs.cjs.js");const p=require("./ui/tag.cjs.js");require("./ui/text.cjs.js");require("./ui/textarea.cjs.js");require("./ui/toast.cjs.js");require("./ui/toggle.cjs.js");require("./ui/toggle-group.cjs.js");require("./ui/tooltip.cjs.js");function h({logo:u,title:t,subtitle:i,thumbnail:a,batchTitle:l,batchName:n="",brandName:c,tag:m,isLoading:r=!1,className:o}){const q=r?s.Skeleton:"div";return e.jsxs(q,{title:t,type:"background",className:d.cn("relative z-10 box-border h-[154px] w-full max-w-[720px] cursor-pointer overflow-hidden rounded-xl bg-white p-4 xs:h-full md:h-[174px] md:max-w-[592px] md:p-5 lg:h-[174px] lg:p-6 xl:h-[174px]",r?"":"border border-grey-200",o),children:[e.jsx(p.Tag,{size:"ad",variant:"ad",style:{background:x.adProducts.premiumCard.background,color:x.adProducts.premiumCard.color},className:d.cn("rounded-bl-xl",r&&"h-7 w-28 animate-pulse"),children:r?"":m}),r?e.jsx(j,{}):e.jsx(f,{logo:u,brandName:c,batchTitle:l,batchName:n,subtitle:i,thumbnail:a})]})}function f({logo:u,brandName:t,batchTitle:i,batchName:a,subtitle:l,thumbnail:n}){return e.jsxs("div",{className:"flex h-full flex-col items-start justify-start gap-2",children:[e.jsx("img",{src:u,alt:`${t} 로고`,className:"h-4 object-contain",loading:"lazy"}),e.jsxs("div",{className:"flex w-full flex-row items-start justify-between gap-6",children:[e.jsxs("div",{className:"flex h-full grow flex-col items-start justify-between gap-2 pb-2",children:[e.jsxs("h3",{className:"line-clamp-2 h-auto text-sm font-normal md:h-12 md:text-base",children:[i," ",a]}),e.jsx("h4",{className:"line-clamp-2 max-h-[56px] w-full break-keep rounded bg-grey-100 px-2 py-1 text-[13px] font-semibold text-grey-600 md:text-[15px] md:text-grey-800",title:l,children:l})]}),e.jsx("img",{src:n,alt:`${i} 썸네일`,className:"h-[86px] w-[86px] shrink-0 grow-0 rounded-xl border border-grey-200 object-cover md:h-[96px] md:w-[96px]",loading:"lazy"})]})]})}function j(){return e.jsxs("div",{className:"flex h-full flex-col items-start justify-center gap-2",children:[e.jsx(s.Skeleton,{className:"h-4 w-1/2"}),e.jsxs("div",{className:"flex w-full items-start justify-between gap-6",children:[e.jsxs("div",{className:"flex h-full w-full flex-col items-start justify-between gap-2 pb-2",children:[e.jsx(s.Skeleton,{className:"h-5 w-4/5 lg:h-12"}),e.jsx(s.Skeleton,{className:"h-5 w-4/5"})]}),e.jsx(s.Skeleton,{className:"h-[86px] w-[86px] shrink-0 grow-0 rounded-xl md:h-[96px] md:w-[96px]"})]})]})}exports.PremiumCard=h;