@designbasekorea/ui-wc 0.5.6 → 0.6.1

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 (193) hide show
  1. package/dist/chunks/lottie-35a9b0f5.js +1 -0
  2. package/dist/esm/components/animation-background/canvas-controller.js +1 -121
  3. package/dist/esm/components/animation-background/controls.js +1 -180
  4. package/dist/esm/components/animation-background/graphite-controller.js +1 -196
  5. package/dist/esm/components/animation-background/graphite-presets.js +1 -42
  6. package/dist/esm/components/animation-background/graphite-shader.js +1 -111
  7. package/dist/esm/components/animation-background/layers.js +1 -369
  8. package/dist/esm/components/animation-background/lumina-presets.js +1 -53
  9. package/dist/esm/components/animation-background/lumina-shaders.js +1 -181
  10. package/dist/esm/components/animation-background/lumina-utils.js +1 -60
  11. package/dist/esm/components/animation-background/particle-defaults.js +1 -36
  12. package/dist/esm/components/animation-background/renderers.js +1 -167
  13. package/dist/esm/components/animation-background/shader-controller.js +1 -154
  14. package/dist/esm/components/color-picker-utils.js +1 -134
  15. package/dist/esm/components/date-picker-utils.js +1 -140
  16. package/dist/esm/components/db-accordion.js +1 -304
  17. package/dist/esm/components/db-ad-banner.js +1 -455
  18. package/dist/esm/components/db-ai-chat-list.d.ts +43 -0
  19. package/dist/esm/components/db-ai-chat-list.js +1 -0
  20. package/dist/esm/components/db-ai-chat.d.ts +159 -0
  21. package/dist/esm/components/db-ai-chat.js +1 -0
  22. package/dist/esm/components/db-alert.js +1 -149
  23. package/dist/esm/components/db-animation-background.js +1 -486
  24. package/dist/esm/components/db-animation-text.js +1 -601
  25. package/dist/esm/components/db-app-badge.js +1 -88
  26. package/dist/esm/components/db-audio-player.js +1 -752
  27. package/dist/esm/components/db-avatar.js +1 -188
  28. package/dist/esm/components/db-backdrop.js +1 -139
  29. package/dist/esm/components/db-badge.js +1 -91
  30. package/dist/esm/components/db-banner.js +1 -188
  31. package/dist/esm/components/db-bottom-navigation.js +1 -146
  32. package/dist/esm/components/db-bottom-sheet.js +1 -481
  33. package/dist/esm/components/db-breadcrumbs.js +1 -329
  34. package/dist/esm/components/db-button.js +1 -316
  35. package/dist/esm/components/db-calendar.js +1 -675
  36. package/dist/esm/components/db-card.js +1 -265
  37. package/dist/esm/components/db-carousel.js +1 -264
  38. package/dist/esm/components/db-chat-composer.d.ts +134 -0
  39. package/dist/esm/components/db-chat-composer.js +1 -0
  40. package/dist/esm/components/db-chat-list.d.ts +47 -0
  41. package/dist/esm/components/db-chat-list.js +1 -0
  42. package/dist/esm/components/db-chat-message.d.ts +39 -0
  43. package/dist/esm/components/db-chat-message.js +1 -0
  44. package/dist/esm/components/db-chat-orb.d.ts +99 -0
  45. package/dist/esm/components/db-chat-orb.js +1 -0
  46. package/dist/esm/components/db-chat-room.d.ts +71 -0
  47. package/dist/esm/components/db-chat-room.js +1 -0
  48. package/dist/esm/components/db-chat-suggestions.d.ts +44 -0
  49. package/dist/esm/components/db-chat-suggestions.js +1 -0
  50. package/dist/esm/components/db-chat-typing.d.ts +22 -0
  51. package/dist/esm/components/db-chat-typing.js +1 -0
  52. package/dist/esm/components/db-chat-welcome.d.ts +32 -0
  53. package/dist/esm/components/db-chat-welcome.js +1 -0
  54. package/dist/esm/components/db-chat-widget.d.ts +146 -0
  55. package/dist/esm/components/db-chat-widget.js +1 -0
  56. package/dist/esm/components/db-checkbox.js +1 -202
  57. package/dist/esm/components/db-chip.js +1 -104
  58. package/dist/esm/components/db-code-block.js +1 -304
  59. package/dist/esm/components/db-color-picker.js +1 -746
  60. package/dist/esm/components/db-confirm.js +1 -191
  61. package/dist/esm/components/db-container.js +1 -39
  62. package/dist/esm/components/db-context-menu.js +1 -265
  63. package/dist/esm/components/db-countdown.js +1 -146
  64. package/dist/esm/components/db-cursor-follower.js +1 -173
  65. package/dist/esm/components/db-date-picker.js +1 -837
  66. package/dist/esm/components/db-divider.js +1 -66
  67. package/dist/esm/components/db-download-progress.d.ts +89 -0
  68. package/dist/esm/components/db-download-progress.js +1 -0
  69. package/dist/esm/components/db-drawer.js +1 -245
  70. package/dist/esm/components/db-dropdown.js +1 -493
  71. package/dist/esm/components/db-dropzone.js +1 -266
  72. package/dist/esm/components/db-email-verify.d.ts +64 -0
  73. package/dist/esm/components/db-email-verify.js +1 -0
  74. package/dist/esm/components/db-empty-state.js +1 -97
  75. package/dist/esm/components/db-file-uploader.js +1 -256
  76. package/dist/esm/components/db-floating-action-button.js +1 -139
  77. package/dist/esm/components/db-footer.js +1 -385
  78. package/dist/esm/components/db-form.js +1 -566
  79. package/dist/esm/components/db-gantt.js +1 -882
  80. package/dist/esm/components/db-gradient.js +1 -133
  81. package/dist/esm/components/db-grid-background.js +1 -909
  82. package/dist/esm/components/db-grid.js +1 -73
  83. package/dist/esm/components/db-icons.d.ts +3 -0
  84. package/dist/esm/components/db-icons.js +1 -82
  85. package/dist/esm/components/db-image-list.js +1 -214
  86. package/dist/esm/components/db-image-placeholder.js +1 -96
  87. package/dist/esm/components/db-image.js +1 -289
  88. package/dist/esm/components/db-indicator.js +1 -517
  89. package/dist/esm/components/db-input.js +1 -420
  90. package/dist/esm/components/db-kanban.js +1 -538
  91. package/dist/esm/components/db-label.js +1 -66
  92. package/dist/esm/components/db-lightbox.js +1 -372
  93. package/dist/esm/components/db-list.js +1 -340
  94. package/dist/esm/components/db-logo-svg.js +1 -72
  95. package/dist/esm/components/db-logo.js +1 -106
  96. package/dist/esm/components/db-lottie.js +1 -109
  97. package/dist/esm/components/db-markdown-editor.js +1 -458
  98. package/dist/esm/components/db-marquee.js +1 -402
  99. package/dist/esm/components/db-masonry.js +1 -94
  100. package/dist/esm/components/db-menu-item.js +1 -211
  101. package/dist/esm/components/db-modal.js +1 -522
  102. package/dist/esm/components/db-navbar.js +1 -680
  103. package/dist/esm/components/db-onboarding-modal.js +1 -322
  104. package/dist/esm/components/db-otp-input.d.ts +53 -0
  105. package/dist/esm/components/db-otp-input.js +1 -0
  106. package/dist/esm/components/db-page-header.js +1 -312
  107. package/dist/esm/components/db-pagination.js +1 -271
  108. package/dist/esm/components/db-phone-verify.d.ts +63 -0
  109. package/dist/esm/components/db-phone-verify.js +1 -0
  110. package/dist/esm/components/db-popover.js +1 -580
  111. package/dist/esm/components/db-progress-step.js +1 -166
  112. package/dist/esm/components/db-progress.js +1 -171
  113. package/dist/esm/components/db-progressbar.js +1 -72
  114. package/dist/esm/components/db-radio.js +1 -172
  115. package/dist/esm/components/db-random-gradient.js +1 -121
  116. package/dist/esm/components/db-range-slider.js +1 -811
  117. package/dist/esm/components/db-rating.js +1 -325
  118. package/dist/esm/components/db-reorder.js +1 -286
  119. package/dist/esm/components/db-resizable-panels.js +1 -282
  120. package/dist/esm/components/db-scroll-area.js +1 -126
  121. package/dist/esm/components/db-search-bar.js +1 -668
  122. package/dist/esm/components/db-section-app-download.js +1 -101
  123. package/dist/esm/components/db-section-contact.js +1 -102
  124. package/dist/esm/components/db-section-cta.js +1 -150
  125. package/dist/esm/components/db-section-faq.js +1 -120
  126. package/dist/esm/components/db-section-feature-grid.js +1 -137
  127. package/dist/esm/components/db-section-feature.js +1 -179
  128. package/dist/esm/components/db-section-hero.js +1 -243
  129. package/dist/esm/components/db-section-logo-cloud.js +1 -138
  130. package/dist/esm/components/db-section-pricing.js +1 -166
  131. package/dist/esm/components/db-section-stats.js +1 -129
  132. package/dist/esm/components/db-section-testimonials.js +1 -252
  133. package/dist/esm/components/db-section.js +1 -385
  134. package/dist/esm/components/db-segment-control.js +1 -231
  135. package/dist/esm/components/db-select.js +1 -571
  136. package/dist/esm/components/db-share-icons.js +1 -40
  137. package/dist/esm/components/db-share.js +1 -489
  138. package/dist/esm/components/db-sidebar.d.ts +20 -0
  139. package/dist/esm/components/db-sidebar.js +1 -1068
  140. package/dist/esm/components/db-skeleton.js +1 -94
  141. package/dist/esm/components/db-spinner.js +1 -102
  142. package/dist/esm/components/db-split-view.js +1 -297
  143. package/dist/esm/components/db-stack.js +1 -46
  144. package/dist/esm/components/db-stat.js +1 -218
  145. package/dist/esm/components/db-stepper.js +1 -398
  146. package/dist/esm/components/db-table.js +1 -412
  147. package/dist/esm/components/db-tabs.js +1 -335
  148. package/dist/esm/components/db-testimonial.d.ts +2 -0
  149. package/dist/esm/components/db-testimonial.js +1 -162
  150. package/dist/esm/components/db-textarea.js +1 -233
  151. package/dist/esm/components/db-time-picker.js +1 -523
  152. package/dist/esm/components/db-timeline.js +1 -174
  153. package/dist/esm/components/db-toast.js +1 -158
  154. package/dist/esm/components/db-toggle.js +1 -162
  155. package/dist/esm/components/db-toolbar.js +1 -94
  156. package/dist/esm/components/db-tooltip.js +1 -440
  157. package/dist/esm/components/db-top-banner.js +1 -121
  158. package/dist/esm/components/db-tutorial.js +1 -324
  159. package/dist/esm/components/db-two-factor.d.ts +71 -0
  160. package/dist/esm/components/db-two-factor.js +1 -0
  161. package/dist/esm/components/db-video-player.js +1 -503
  162. package/dist/esm/components/db-youtube-player.js +1 -194
  163. package/dist/esm/components/highlight-code.js +1 -65
  164. package/dist/esm/components/input-validation.js +1 -50
  165. package/dist/esm/components/marketing-block-host-utils.js +1 -9
  166. package/dist/esm/components/number-scrub.js +1 -117
  167. package/dist/esm/components/random-gradient-palettes.js +1 -67
  168. package/dist/esm/components/section-block-header-utils.js +1 -48
  169. package/dist/esm/helpers/confirm.js +1 -52
  170. package/dist/esm/helpers/toast.js +1 -73
  171. package/dist/esm/index.d.ts +16 -0
  172. package/dist/esm/index.js +1 -111
  173. package/dist/esm/node_modules/prismjs/components/prism-bash.js +1 -235
  174. package/dist/esm/node_modules/prismjs/components/prism-clike.js +1 -31
  175. package/dist/esm/node_modules/prismjs/components/prism-css.js +1 -64
  176. package/dist/esm/node_modules/prismjs/components/prism-javascript.js +1 -172
  177. package/dist/esm/node_modules/prismjs/components/prism-json.js +1 -27
  178. package/dist/esm/node_modules/prismjs/components/prism-jsx.js +1 -143
  179. package/dist/esm/node_modules/prismjs/components/prism-markup.js +1 -186
  180. package/dist/esm/node_modules/prismjs/components/prism-scss.js +1 -81
  181. package/dist/esm/node_modules/prismjs/components/prism-tsx.js +1 -15
  182. package/dist/esm/node_modules/prismjs/components/prism-typescript.js +1 -60
  183. package/dist/index.cjs +1 -55414
  184. package/dist/index.css +1 -1
  185. package/dist/index.d.ts +1125 -2
  186. package/dist/index.esm.js +1 -38284
  187. package/dist/react/chunks/lottie-14e7addb.js +1 -0
  188. package/dist/react/index.cjs +1 -56503
  189. package/dist/react/index.d.ts +1637 -21
  190. package/dist/react/index.esm.js +1 -39373
  191. package/package.json +2 -2
  192. package/dist/chunks/lottie-e273b936.js +0 -17032
  193. package/dist/react/chunks/lottie-72a4c6d4.js +0 -17032
@@ -1,194 +1 @@
1
- class DbYouTubePlayer extends HTMLElement {
2
- constructor() {
3
- super(...arguments);
4
- this.isFullscreen = false;
5
- this.playlistIndex = 0;
6
- this.onFullscreenChange = () => {
7
- this.isFullscreen = !!document.fullscreenElement;
8
- this.dispatchEvent(new CustomEvent('db-fullscreen-change', { detail: { isFullscreen: this.isFullscreen }, bubbles: true, composed: true }));
9
- this.render();
10
- };
11
- }
12
- static get observedAttributes() {
13
- return [
14
- 'video-id',
15
- 'title',
16
- 'description',
17
- 'size',
18
- 'variant',
19
- 'theme',
20
- 'auto-play',
21
- 'loop',
22
- 'muted',
23
- 'show-controls',
24
- 'enable-fullscreen',
25
- 'enable-keyboard',
26
- 'enable-touch',
27
- 'show-subtitles',
28
- 'default-subtitle-lang',
29
- 'playback-rate',
30
- 'start-time',
31
- 'end-time',
32
- 'show-related-videos',
33
- 'show-info',
34
- 'show-channel-info',
35
- 'show-like-buttons',
36
- 'show-comments',
37
- 'playlist',
38
- 'current-index',
39
- ];
40
- }
41
- connectedCallback() {
42
- this.style.display = 'block';
43
- this.playlistIndex = Number(this.getAttribute('current-index') || 0);
44
- this.render();
45
- document.addEventListener('fullscreenchange', this.onFullscreenChange);
46
- }
47
- disconnectedCallback() {
48
- document.removeEventListener('fullscreenchange', this.onFullscreenChange);
49
- }
50
- attributeChangedCallback() {
51
- this.render();
52
- }
53
- getBool(name, fallback = false) {
54
- if (!this.hasAttribute(name))
55
- return fallback;
56
- const value = this.getAttribute(name);
57
- return value === '' || value === 'true';
58
- }
59
- extractVideoId(url) {
60
- if (!url)
61
- return '';
62
- if (url.length === 11 && /^[a-zA-Z0-9_-]{11}$/.test(url))
63
- return url;
64
- const patterns = [
65
- /(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/|youtube\.com\/v\/|youtube\.com\/watch\?.*&v=)([^&\n?#]+)/,
66
- /youtube\.com\/watch\?.*v=([^&\n?#]+)/,
67
- ];
68
- for (const pattern of patterns) {
69
- const match = url.match(pattern);
70
- if (match)
71
- return match[1];
72
- }
73
- return url;
74
- }
75
- getPlaylist() {
76
- try {
77
- const raw = this.getAttribute('playlist');
78
- const parsed = raw ? JSON.parse(raw) : [];
79
- return Array.isArray(parsed) ? parsed : [];
80
- }
81
- catch {
82
- return [];
83
- }
84
- }
85
- getCurrentVideoId() {
86
- const playlist = this.getPlaylist();
87
- if (playlist.length > 0) {
88
- const index = Math.max(0, Math.min(playlist.length - 1, this.playlistIndex));
89
- return this.extractVideoId(playlist[index]);
90
- }
91
- return this.extractVideoId(this.getAttribute('video-id') || '');
92
- }
93
- generateEmbedUrl(videoId) {
94
- const params = new URLSearchParams();
95
- if (this.getBool('auto-play'))
96
- params.append('autoplay', '1');
97
- if (this.getBool('loop'))
98
- params.append('loop', '1');
99
- if (this.getBool('muted'))
100
- params.append('mute', '1');
101
- if (!this.getBool('show-controls', true))
102
- params.append('controls', '0');
103
- if (!this.getBool('enable-fullscreen', true))
104
- params.append('fs', '0');
105
- if (!this.getBool('enable-keyboard', true))
106
- params.append('disablekb', '1');
107
- if (!this.getBool('enable-touch', true))
108
- params.append('modestbranding', '1');
109
- if (this.getBool('show-subtitles')) {
110
- params.append('cc_load_policy', '1');
111
- const subtitleLang = this.getAttribute('default-subtitle-lang') || 'ko';
112
- if (subtitleLang)
113
- params.append('cc_lang_pref', subtitleLang);
114
- }
115
- const playbackRate = this.getAttribute('playback-rate') || '1';
116
- if (playbackRate !== '1')
117
- params.append('vq', playbackRate);
118
- const start = Number(this.getAttribute('start-time') || 0);
119
- if (start > 0)
120
- params.append('start', String(start));
121
- const end = Number(this.getAttribute('end-time') || 0);
122
- if (end > 0)
123
- params.append('end', String(end));
124
- if (!this.getBool('show-related-videos', true))
125
- params.append('rel', '0');
126
- if (!this.getBool('show-info', true))
127
- params.append('showinfo', '0');
128
- if (!this.getBool('show-channel-info', true))
129
- params.append('modestbranding', '1');
130
- if (!this.getBool('show-like-buttons', true))
131
- params.append('modestbranding', '1');
132
- if (!this.getBool('show-comments', false))
133
- params.append('modestbranding', '1');
134
- const playlist = this.getPlaylist().map((entry) => this.extractVideoId(entry)).filter(Boolean);
135
- if (playlist.length > 0) {
136
- params.append('playlist', playlist.join(','));
137
- }
138
- else if (this.getBool('loop')) {
139
- params.append('playlist', videoId);
140
- }
141
- const query = params.toString();
142
- return `https://www.youtube.com/embed/${videoId}${query ? `?${query}` : ''}`;
143
- }
144
- render() {
145
- const size = this.getAttribute('size') || 'm';
146
- const variant = this.getAttribute('variant') || 'default';
147
- const theme = this.getAttribute('theme') || 'auto';
148
- this.className = [
149
- 'designbase-wc-youtube-player',
150
- `designbase-wc-youtube-player--${size}`,
151
- `designbase-wc-youtube-player--${variant}`,
152
- `designbase-wc-youtube-player--${theme}`,
153
- this.isFullscreen && 'designbase-wc-youtube-player--fullscreen',
154
- ]
155
- .filter(Boolean)
156
- .join(' ');
157
- const currentVideoId = this.getCurrentVideoId();
158
- if (!currentVideoId) {
159
- const error = document.createElement('div');
160
- error.className = 'designbase-wc-youtube-player__error';
161
- error.textContent = '동영상을 불러올 수 없습니다.';
162
- this.replaceChildren(error);
163
- return;
164
- }
165
- const container = document.createElement('div');
166
- container.className = 'designbase-wc-youtube-player__container';
167
- const iframe = document.createElement('iframe');
168
- iframe.className = 'designbase-wc-youtube-player__iframe';
169
- iframe.src = this.generateEmbedUrl(currentVideoId);
170
- iframe.title = this.getAttribute('title') || `YouTube 동영상: ${currentVideoId}`;
171
- iframe.setAttribute('frameborder', '0');
172
- iframe.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share');
173
- iframe.setAttribute('referrerpolicy', 'strict-origin-when-cross-origin');
174
- iframe.referrerPolicy = 'strict-origin-when-cross-origin';
175
- iframe.allowFullscreen = true;
176
- container.append(iframe);
177
- const description = this.getAttribute('description');
178
- const fragment = document.createDocumentFragment();
179
- fragment.append(container);
180
- if (description && variant !== 'minimal') {
181
- const desc = document.createElement('div');
182
- desc.className = 'designbase-wc-youtube-player__description';
183
- const p = document.createElement('p');
184
- p.textContent = description;
185
- desc.append(p);
186
- fragment.append(desc);
187
- }
188
- this.replaceChildren(fragment);
189
- }
190
- }
191
- if (!customElements.get('db-youtube-player'))
192
- customElements.define('db-youtube-player', DbYouTubePlayer);
193
-
194
- export { DbYouTubePlayer };
1
+ class DbYouTubePlayer extends HTMLElement{constructor(){super(...arguments),this.isFullscreen=!1,this.playlistIndex=0,this.onFullscreenChange=()=>{this.isFullscreen=!!document.fullscreenElement,this.dispatchEvent(new CustomEvent("db-fullscreen-change",{detail:{isFullscreen:this.isFullscreen},bubbles:!0,composed:!0})),this.render()}}static get observedAttributes(){return["video-id","title","description","size","variant","theme","auto-play","loop","muted","show-controls","enable-fullscreen","enable-keyboard","enable-touch","show-subtitles","default-subtitle-lang","playback-rate","start-time","end-time","show-related-videos","show-info","show-channel-info","show-like-buttons","show-comments","playlist","current-index"]}connectedCallback(){this.style.display="block",this.playlistIndex=Number(this.getAttribute("current-index")||0),this.render(),document.addEventListener("fullscreenchange",this.onFullscreenChange)}disconnectedCallback(){document.removeEventListener("fullscreenchange",this.onFullscreenChange)}attributeChangedCallback(){this.render()}getBool(e,t=!1){if(!this.hasAttribute(e))return t;const s=this.getAttribute(e);return""===s||"true"===s}extractVideoId(e){if(!e)return"";if(11===e.length&&/^[a-zA-Z0-9_-]{11}$/.test(e))return e;const t=[/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/|youtube\.com\/v\/|youtube\.com\/watch\?.*&v=)([^&\n?#]+)/,/youtube\.com\/watch\?.*v=([^&\n?#]+)/];for(const s of t){const t=e.match(s);if(t)return t[1]}return e}getPlaylist(){try{const e=this.getAttribute("playlist"),t=e?JSON.parse(e):[];return Array.isArray(t)?t:[]}catch{return[]}}getCurrentVideoId(){const e=this.getPlaylist();if(e.length>0){const t=Math.max(0,Math.min(e.length-1,this.playlistIndex));return this.extractVideoId(e[t])}return this.extractVideoId(this.getAttribute("video-id")||"")}generateEmbedUrl(e){const t=new URLSearchParams;if(this.getBool("auto-play")&&t.append("autoplay","1"),this.getBool("loop")&&t.append("loop","1"),this.getBool("muted")&&t.append("mute","1"),this.getBool("show-controls",!0)||t.append("controls","0"),this.getBool("enable-fullscreen",!0)||t.append("fs","0"),this.getBool("enable-keyboard",!0)||t.append("disablekb","1"),this.getBool("enable-touch",!0)||t.append("modestbranding","1"),this.getBool("show-subtitles")){t.append("cc_load_policy","1");const e=this.getAttribute("default-subtitle-lang")||"ko";e&&t.append("cc_lang_pref",e)}const s=this.getAttribute("playback-rate")||"1";"1"!==s&&t.append("vq",s);const n=Number(this.getAttribute("start-time")||0);n>0&&t.append("start",String(n));const o=Number(this.getAttribute("end-time")||0);o>0&&t.append("end",String(o)),this.getBool("show-related-videos",!0)||t.append("rel","0"),this.getBool("show-info",!0)||t.append("showinfo","0"),this.getBool("show-channel-info",!0)||t.append("modestbranding","1"),this.getBool("show-like-buttons",!0)||t.append("modestbranding","1"),this.getBool("show-comments",!1)||t.append("modestbranding","1");const i=this.getPlaylist().map(e=>this.extractVideoId(e)).filter(Boolean);i.length>0?t.append("playlist",i.join(",")):this.getBool("loop")&&t.append("playlist",e);const r=t.toString();return`https://www.youtube.com/embed/${e}${r?`?${r}`:""}`}render(){const e=this.getAttribute("size")||"m",t=this.getAttribute("variant")||"default",s=this.getAttribute("theme")||"auto";this.className=["designbase-wc-youtube-player",`designbase-wc-youtube-player--${e}`,`designbase-wc-youtube-player--${t}`,`designbase-wc-youtube-player--${s}`,this.isFullscreen&&"designbase-wc-youtube-player--fullscreen"].filter(Boolean).join(" ");const n=this.getCurrentVideoId();if(!n){const e=document.createElement("div");return e.className="designbase-wc-youtube-player__error",e.textContent="동영상을 불러올 수 없습니다.",void this.replaceChildren(e)}const o=document.createElement("div");o.className="designbase-wc-youtube-player__container";const i=document.createElement("iframe");i.className="designbase-wc-youtube-player__iframe",i.src=this.generateEmbedUrl(n),i.title=this.getAttribute("title")||`YouTube 동영상: ${n}`,i.setAttribute("frameborder","0"),i.setAttribute("allow","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"),i.setAttribute("referrerpolicy","strict-origin-when-cross-origin"),i.referrerPolicy="strict-origin-when-cross-origin",i.allowFullscreen=!0,o.append(i);const r=this.getAttribute("description"),a=document.createDocumentFragment();if(a.append(o),r&&"minimal"!==t){const e=document.createElement("div");e.className="designbase-wc-youtube-player__description";const t=document.createElement("p");t.textContent=r,e.append(t),a.append(e)}this.replaceChildren(a)}}customElements.get("db-youtube-player")||customElements.define("db-youtube-player",DbYouTubePlayer);export{DbYouTubePlayer};
@@ -1,65 +1 @@
1
- import * as PrismNamespace from 'prismjs';
2
- import '../node_modules/prismjs/components/prism-clike.js';
3
- import '../node_modules/prismjs/components/prism-markup.js';
4
- import '../node_modules/prismjs/components/prism-css.js';
5
- import '../node_modules/prismjs/components/prism-scss.js';
6
- import '../node_modules/prismjs/components/prism-bash.js';
7
- import '../node_modules/prismjs/components/prism-json.js';
8
- import '../node_modules/prismjs/components/prism-javascript.js';
9
- import '../node_modules/prismjs/components/prism-typescript.js';
10
- import '../node_modules/prismjs/components/prism-jsx.js';
11
- import '../node_modules/prismjs/components/prism-tsx.js';
12
-
13
- const LANGUAGE_ALIASES = {
14
- js: 'javascript',
15
- ts: 'typescript',
16
- sh: 'bash',
17
- shell: 'bash',
18
- html: 'markup',
19
- xml: 'markup',
20
- svg: 'markup',
21
- };
22
- const LANGUAGE_LABELS = {
23
- javascript: 'JavaScript',
24
- typescript: 'TypeScript',
25
- tsx: 'TSX',
26
- jsx: 'JSX',
27
- css: 'CSS',
28
- scss: 'SCSS',
29
- json: 'JSON',
30
- bash: 'Bash',
31
- markup: 'HTML',
32
- };
33
- /** prism language components mutate the global Prism singleton — not always the ESM namespace */
34
- const getPrism = () => {
35
- const globalPrism = globalThis.Prism;
36
- if (globalPrism?.languages)
37
- return globalPrism;
38
- return PrismNamespace.default ?? PrismNamespace;
39
- };
40
- const resolvePrismLanguage = (language) => {
41
- const normalized = language.toLowerCase().trim();
42
- return LANGUAGE_ALIASES[normalized] ?? normalized;
43
- };
44
- const formatLanguageLabel = (language) => {
45
- const resolved = resolvePrismLanguage(language);
46
- return LANGUAGE_LABELS[resolved] ?? language.toUpperCase();
47
- };
48
- const highlightWithPrism = (code, language) => {
49
- const Prism = getPrism();
50
- const lang = resolvePrismLanguage(language);
51
- const grammar = Prism.languages[lang];
52
- if (!grammar) {
53
- return null;
54
- }
55
- try {
56
- return Prism.highlight(code, grammar, lang);
57
- }
58
- catch {
59
- return null;
60
- }
61
- };
62
- const ensureHighlightReady = () => Promise.resolve();
63
- const highlightCodeSync = (code, language) => highlightWithPrism(code, language);
64
-
65
- export { ensureHighlightReady, formatLanguageLabel, highlightCodeSync, resolvePrismLanguage };
1
+ import*as s from"prismjs";import"../node_modules/prismjs/components/prism-clike.js";import"../node_modules/prismjs/components/prism-markup.js";import"../node_modules/prismjs/components/prism-css.js";import"../node_modules/prismjs/components/prism-scss.js";import"../node_modules/prismjs/components/prism-bash.js";import"../node_modules/prismjs/components/prism-json.js";import"../node_modules/prismjs/components/prism-javascript.js";import"../node_modules/prismjs/components/prism-typescript.js";import"../node_modules/prismjs/components/prism-jsx.js";import"../node_modules/prismjs/components/prism-tsx.js";const o={js:"javascript",ts:"typescript",sh:"bash",shell:"bash",html:"markup",xml:"markup",svg:"markup"},r={javascript:"JavaScript",typescript:"TypeScript",tsx:"TSX",jsx:"JSX",css:"CSS",scss:"SCSS",json:"JSON",bash:"Bash",markup:"HTML"},resolvePrismLanguage=s=>{const r=s.toLowerCase().trim();return o[r]??r},formatLanguageLabel=s=>{const o=resolvePrismLanguage(s);return r[o]??s.toUpperCase()},highlightWithPrism=(o,r)=>{const m=(()=>{const o=globalThis.Prism;return o?.languages?o:s.default??s})(),p=resolvePrismLanguage(r),t=m.languages[p];if(!t)return null;try{return m.highlight(o,t,p)}catch{return null}},ensureHighlightReady=()=>Promise.resolve(),highlightCodeSync=(s,o)=>highlightWithPrism(s,o);export{ensureHighlightReady,formatLanguageLabel,highlightCodeSync,resolvePrismLanguage};
@@ -1,50 +1 @@
1
- const STRENGTH_LABELS = {
2
- weak: '약함',
3
- fair: '보통',
4
- good: '강함',
5
- 'very-strong': '아주 강함',
6
- };
7
- function getPasswordStrengthLevel(metCount, hasValue) {
8
- if (!hasValue || metCount <= 1)
9
- return 'weak';
10
- if (metCount === 2)
11
- return 'fair';
12
- if (metCount === 3)
13
- return 'good';
14
- return 'very-strong';
15
- }
16
- function getPasswordScore(level) {
17
- switch (level) {
18
- case 'weak':
19
- return 1;
20
- case 'fair':
21
- return 2;
22
- case 'good':
23
- return 3;
24
- case 'very-strong':
25
- return 4;
26
- default:
27
- return 0;
28
- }
29
- }
30
- function getPasswordValidation(value, minLength = 8) {
31
- const requirements = [
32
- { id: 'length', label: `최소 ${minLength}자 이상`, met: value.length >= minLength },
33
- { id: 'lowercase', label: '소문자 포함', met: /[a-z]/.test(value) },
34
- { id: 'uppercase', label: '대문자 포함', met: /[A-Z]/.test(value) },
35
- { id: 'number', label: '숫자 포함', met: /\d/.test(value) },
36
- { id: 'special', label: '특수문자 포함', met: /[!@#$%^&*(),.?":{}|<>]/.test(value) },
37
- ];
38
- const metCount = requirements.filter((requirement) => requirement.met).length;
39
- const level = getPasswordStrengthLevel(metCount, value.length > 0);
40
- return {
41
- requirements,
42
- score: getPasswordScore(level),
43
- level,
44
- levelLabel: STRENGTH_LABELS[level],
45
- isValid: requirements.every((requirement) => requirement.met),
46
- isStrongEnough: level === 'good' || level === 'very-strong',
47
- };
48
- }
49
-
50
- export { getPasswordValidation };
1
+ const e={weak:"약함",fair:"보통",good:"강함","very-strong":"아주 강함"};function getPasswordScore(e){switch(e){case"weak":return 1;case"fair":return 2;case"good":return 3;case"very-strong":return 4;default:return 0}}function getPasswordValidation(t,r=8){const s=[{id:"length",label:`최소 ${r}자 이상`,met:t.length>=r},{id:"lowercase",label:"소문자 포함",met:/[a-z]/.test(t)},{id:"uppercase",label:"대문자 포함",met:/[A-Z]/.test(t)},{id:"number",label:"숫자 포함",met:/\d/.test(t)},{id:"special",label:"특수문자 포함",met:/[!@#$%^&*(),.?":{}|<>]/.test(t)}],a=function getPasswordStrengthLevel(e,t){return!t||e<=1?"weak":2===e?"fair":3===e?"good":"very-strong"}(s.filter(e=>e.met).length,t.length>0);return{requirements:s,score:getPasswordScore(a),level:a,levelLabel:e[a],isValid:s.every(e=>e.met),isStrongEnough:"good"===a||"very-strong"===a}}export{getPasswordValidation};
@@ -1,9 +1 @@
1
- const HOST_FLAGS = ['full-width', 'full-height', 'overflow-visible'];
2
- /** Marketing blocks are standalone components — sync layout flags on the host, not nested db-section. */
3
- function syncMarketingBlockHost(host, baseClass) {
4
- for (const flag of HOST_FLAGS) {
5
- host.classList.toggle(`${baseClass}--${flag}`, host.hasAttribute(flag));
6
- }
7
- }
8
-
9
- export { syncMarketingBlockHost };
1
+ const t=["full-width","full-height","overflow-visible"];function syncMarketingBlockHost(o,s){for(const l of t)o.classList.toggle(`${s}--${l}`,o.hasAttribute(l))}export{syncMarketingBlockHost};
@@ -1,117 +1 @@
1
- function parseScrubNumericValue(raw) {
2
- const trimmed = raw.trim();
3
- if (trimmed === '')
4
- return 0;
5
- const parsed = Number(trimmed);
6
- return Number.isFinite(parsed) ? parsed : null;
7
- }
8
- function getStepDecimalPlaces(step) {
9
- const normalized = String(step);
10
- const dotIndex = normalized.indexOf('.');
11
- if (dotIndex === -1)
12
- return 0;
13
- return normalized.length - dotIndex - 1;
14
- }
15
- function formatScrubValue(value, step) {
16
- const decimals = getStepDecimalPlaces(step);
17
- if (decimals > 0) {
18
- return value.toFixed(decimals);
19
- }
20
- return String(Math.round(value));
21
- }
22
- function computeScrubValue(startValue, deltaX, sensitivity, step, modifiers, min, max) {
23
- const multiplier = modifiers.shiftKey ? 10 : modifiers.altKey ? 0.1 : 1;
24
- const effectiveStep = step * multiplier;
25
- const steps = Math.round(deltaX / sensitivity);
26
- let next = startValue + steps * effectiveStep;
27
- if (min !== undefined)
28
- next = Math.max(min, next);
29
- if (max !== undefined)
30
- next = Math.min(max, next);
31
- const decimals = getStepDecimalPlaces(effectiveStep);
32
- if (decimals > 0) {
33
- next = Number(next.toFixed(decimals));
34
- }
35
- else {
36
- next = Math.round(next);
37
- }
38
- return next;
39
- }
40
- function readNumericAttribute(element, name) {
41
- const raw = element.getAttribute(name);
42
- if (raw === null || raw === '')
43
- return undefined;
44
- const parsed = Number(raw);
45
- return Number.isFinite(parsed) ? parsed : undefined;
46
- }
47
- const SCRUB_DRAG_THRESHOLD = 3;
48
- function attachNumberScrub(input, options) {
49
- let session = null;
50
- const endScrub = () => {
51
- session = null;
52
- options.onScrubStateChange?.(false);
53
- document.body.style.removeProperty('cursor');
54
- document.body.style.removeProperty('user-select');
55
- };
56
- const applyScrub = (clientX, modifiers) => {
57
- if (!session)
58
- return;
59
- const deltaX = clientX - session.startX;
60
- const step = options.getStep();
61
- const next = computeScrubValue(session.startValue, deltaX, options.getSensitivity(), step, modifiers, options.getMin(), options.getMax());
62
- options.onValueChange(formatScrubValue(next, step));
63
- };
64
- const handlePointerDown = (event) => {
65
- if (!options.isEnabled() || !options.isInteractive() || event.button !== 0)
66
- return;
67
- const startValue = parseScrubNumericValue(options.getValue());
68
- if (startValue === null)
69
- return;
70
- session = {
71
- pointerId: event.pointerId,
72
- startX: event.clientX,
73
- startValue,
74
- moved: false,
75
- };
76
- input.setPointerCapture(event.pointerId);
77
- };
78
- const handlePointerMove = (event) => {
79
- if (!session || session.pointerId !== event.pointerId)
80
- return;
81
- const deltaX = event.clientX - session.startX;
82
- if (!session.moved && Math.abs(deltaX) < SCRUB_DRAG_THRESHOLD)
83
- return;
84
- if (!session.moved) {
85
- session.moved = true;
86
- options.onScrubStateChange?.(true);
87
- document.body.style.cursor = 'ew-resize';
88
- document.body.style.userSelect = 'none';
89
- }
90
- event.preventDefault();
91
- applyScrub(event.clientX, event);
92
- };
93
- const handlePointerEnd = (event) => {
94
- if (!session || session.pointerId !== event.pointerId)
95
- return;
96
- if (session.moved) {
97
- event.preventDefault();
98
- }
99
- if (input.hasPointerCapture(event.pointerId)) {
100
- input.releasePointerCapture(event.pointerId);
101
- }
102
- endScrub();
103
- };
104
- input.addEventListener('pointerdown', handlePointerDown);
105
- input.addEventListener('pointermove', handlePointerMove);
106
- input.addEventListener('pointerup', handlePointerEnd);
107
- input.addEventListener('pointercancel', handlePointerEnd);
108
- return () => {
109
- endScrub();
110
- input.removeEventListener('pointerdown', handlePointerDown);
111
- input.removeEventListener('pointermove', handlePointerMove);
112
- input.removeEventListener('pointerup', handlePointerEnd);
113
- input.removeEventListener('pointercancel', handlePointerEnd);
114
- };
115
- }
116
-
117
- export { attachNumberScrub, computeScrubValue, formatScrubValue, getStepDecimalPlaces, parseScrubNumericValue, readNumericAttribute };
1
+ function parseScrubNumericValue(e){const t=e.trim();if(""===t)return 0;const r=Number(t);return Number.isFinite(r)?r:null}function getStepDecimalPlaces(e){const t=String(e),r=t.indexOf(".");return-1===r?0:t.length-r-1}function formatScrubValue(e,t){const r=getStepDecimalPlaces(t);return r>0?e.toFixed(r):String(Math.round(e))}function computeScrubValue(e,t,r,n,o,u,i){const a=n*(o.shiftKey?10:o.altKey?.1:1);let c=e+Math.round(t/r)*a;void 0!==u&&(c=Math.max(u,c)),void 0!==i&&(c=Math.min(i,c));const s=getStepDecimalPlaces(a);return c=s>0?Number(c.toFixed(s)):Math.round(c),c}function readNumericAttribute(e,t){const r=e.getAttribute(t);if(null===r||""===r)return;const n=Number(r);return Number.isFinite(n)?n:void 0}function attachNumberScrub(e,t){let r=null;const endScrub=()=>{r=null,t.onScrubStateChange?.(!1),document.body.style.removeProperty("cursor"),document.body.style.removeProperty("user-select")},handlePointerDown=n=>{if(!t.isEnabled()||!t.isInteractive()||0!==n.button)return;const o=parseScrubNumericValue(t.getValue());null!==o&&(r={pointerId:n.pointerId,startX:n.clientX,startValue:o,moved:!1},e.setPointerCapture(n.pointerId))},handlePointerMove=e=>{if(!r||r.pointerId!==e.pointerId)return;const n=e.clientX-r.startX;!r.moved&&Math.abs(n)<3||(r.moved||(r.moved=!0,t.onScrubStateChange?.(!0),document.body.style.cursor="ew-resize",document.body.style.userSelect="none"),e.preventDefault(),((e,n)=>{if(!r)return;const o=e-r.startX,u=t.getStep(),i=computeScrubValue(r.startValue,o,t.getSensitivity(),u,n,t.getMin(),t.getMax());t.onValueChange(formatScrubValue(i,u))})(e.clientX,e))},handlePointerEnd=t=>{r&&r.pointerId===t.pointerId&&(r.moved&&t.preventDefault(),e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),endScrub())};return e.addEventListener("pointerdown",handlePointerDown),e.addEventListener("pointermove",handlePointerMove),e.addEventListener("pointerup",handlePointerEnd),e.addEventListener("pointercancel",handlePointerEnd),()=>{endScrub(),e.removeEventListener("pointerdown",handlePointerDown),e.removeEventListener("pointermove",handlePointerMove),e.removeEventListener("pointerup",handlePointerEnd),e.removeEventListener("pointercancel",handlePointerEnd)}}export{attachNumberScrub,computeScrubValue,formatScrubValue,getStepDecimalPlaces,parseScrubNumericValue,readNumericAttribute};
@@ -1,67 +1 @@
1
- const COLOR_PALETTES = {
2
- primary: {
3
- light: ['#eff6ff', '#dbeafe', '#bfdbfe', '#93c5fd'],
4
- vivid: ['#3b82f6', '#2563eb', '#1d4ed8', '#1e40af', '#1e3a8a'],
5
- dark: ['#0f172a', '#1e293b', '#334155', '#475569', '#64748b'],
6
- },
7
- secondary: {
8
- light: ['#f8fafc', '#f1f5f9', '#e2e8f0', '#cbd5e1'],
9
- vivid: ['#6b7280', '#4b5563', '#374151', '#1f2937', '#111827'],
10
- dark: ['#0f0f0f', '#1a1a1a', '#262626', '#404040', '#525252'],
11
- },
12
- success: {
13
- light: ['#f0fdf4', '#dcfce7', '#bbf7d0', '#86efac'],
14
- vivid: ['#22c55e', '#16a34a', '#15803d', '#166534', '#14532d'],
15
- dark: ['#052e16', '#14532d', '#166534', '#15803d', '#16a34a'],
16
- },
17
- warning: {
18
- light: ['#fffbeb', '#fef3c7', '#fde68a'],
19
- vivid: ['#f59e0b', '#d97706', '#b45309', '#92400e', '#78350f'],
20
- dark: ['#451a03', '#78350f', '#92400e', '#b45309', '#d97706'],
21
- },
22
- error: {
23
- light: ['#fef2f2', '#fecaca', '#fca5a5'],
24
- vivid: ['#ef4444', '#dc2626', '#b91c1c', '#991b1b', '#7f1d1d'],
25
- dark: ['#450a0a', '#7f1d1d', '#991b1b', '#b91c1c', '#dc2626'],
26
- },
27
- info: {
28
- light: ['#eff6ff', '#dbeafe', '#bfdbfe', '#93c5fd'],
29
- vivid: ['#3b82f6', '#2563eb', '#1d4ed8', '#1e40af', '#1e3a8a'],
30
- dark: ['#0f172a', '#1e293b', '#334155', '#475569', '#64748b'],
31
- },
32
- purple: {
33
- light: ['#faf5ff', '#f3e8ff', '#e9d5ff', '#d8b4fe'],
34
- vivid: ['#a855f7', '#9333ea', '#7c3aed', '#6d28d9', '#5b21b6'],
35
- dark: ['#3b0764', '#581c87', '#6b21a8', '#7c3aed', '#9333ea'],
36
- },
37
- ocean: {
38
- light: ['#f0fdfa', '#ccfbf1', '#99f6e4'],
39
- vivid: ['#14b8a6', '#0d9488', '#0f766e', '#115e59', '#134e4a'],
40
- dark: ['#042f2e', '#134e4a', '#115e59', '#0f766e', '#0d9488'],
41
- },
42
- sunset: {
43
- light: ['#fff7ed', '#fed7aa', '#fdba74'],
44
- vivid: ['#f97316', '#ea580c', '#c2410c', '#9a3412', '#7c2d12'],
45
- dark: ['#431407', '#7c2d12', '#9a3412', '#c2410c', '#ea580c'],
46
- },
47
- };
48
- function createRandomGradientStyle(scheme, tone, colorCount, blur, animated, animationDuration) {
49
- const schemeColors = COLOR_PALETTES[scheme][tone];
50
- const numColors = Math.min(6, Math.max(3, colorCount));
51
- const colors = [];
52
- for (let index = 0; index < numColors; index += 1) {
53
- colors.push(schemeColors[Math.floor(Math.random() * schemeColors.length)]);
54
- }
55
- const positions = Array.from({ length: numColors }, () => Math.random() * 100).sort((a, b) => a - b);
56
- const gradientStops = colors.map((color, index) => `${color} ${positions[index]}%`).join(', ');
57
- const centerX = Math.random() * 100;
58
- const centerY = Math.random() * 100;
59
- const minBlur = Math.max(80, blur);
60
- return {
61
- background: `radial-gradient(circle at ${centerX}% ${centerY}%, ${gradientStops})`,
62
- filter: `blur(${minBlur}px)`,
63
- transition: animated ? `background ${animationDuration}s ease-in-out` : 'none',
64
- };
65
- }
66
-
67
- export { COLOR_PALETTES, createRandomGradientStyle };
1
+ const a={primary:{light:["#eff6ff","#dbeafe","#bfdbfe","#93c5fd"],vivid:["#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a"],dark:["#0f172a","#1e293b","#334155","#475569","#64748b"]},secondary:{light:["#f8fafc","#f1f5f9","#e2e8f0","#cbd5e1"],vivid:["#6b7280","#4b5563","#374151","#1f2937","#111827"],dark:["#0f0f0f","#1a1a1a","#262626","#404040","#525252"]},success:{light:["#f0fdf4","#dcfce7","#bbf7d0","#86efac"],vivid:["#22c55e","#16a34a","#15803d","#166534","#14532d"],dark:["#052e16","#14532d","#166534","#15803d","#16a34a"]},warning:{light:["#fffbeb","#fef3c7","#fde68a"],vivid:["#f59e0b","#d97706","#b45309","#92400e","#78350f"],dark:["#451a03","#78350f","#92400e","#b45309","#d97706"]},error:{light:["#fef2f2","#fecaca","#fca5a5"],vivid:["#ef4444","#dc2626","#b91c1c","#991b1b","#7f1d1d"],dark:["#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626"]},info:{light:["#eff6ff","#dbeafe","#bfdbfe","#93c5fd"],vivid:["#3b82f6","#2563eb","#1d4ed8","#1e40af","#1e3a8a"],dark:["#0f172a","#1e293b","#334155","#475569","#64748b"]},purple:{light:["#faf5ff","#f3e8ff","#e9d5ff","#d8b4fe"],vivid:["#a855f7","#9333ea","#7c3aed","#6d28d9","#5b21b6"],dark:["#3b0764","#581c87","#6b21a8","#7c3aed","#9333ea"]},ocean:{light:["#f0fdfa","#ccfbf1","#99f6e4"],vivid:["#14b8a6","#0d9488","#0f766e","#115e59","#134e4a"],dark:["#042f2e","#134e4a","#115e59","#0f766e","#0d9488"]},sunset:{light:["#fff7ed","#fed7aa","#fdba74"],vivid:["#f97316","#ea580c","#c2410c","#9a3412","#7c2d12"],dark:["#431407","#7c2d12","#9a3412","#c2410c","#ea580c"]}};function createRandomGradientStyle(f,e,d,c,i,r){const b=a[f][e],t=Math.min(6,Math.max(3,d)),n=[];for(let a=0;a<t;a+=1)n.push(b[Math.floor(Math.random()*b.length)]);const o=Array.from({length:t},()=>100*Math.random()).sort((a,f)=>a-f),h=n.map((a,f)=>`${a} ${o[f]}%`).join(", ");return{background:`radial-gradient(circle at ${100*Math.random()}% ${100*Math.random()}%, ${h})`,filter:`blur(${Math.max(80,c)}px)`,transition:i?`background ${r}s ease-in-out`:"none"}}export{a as COLOR_PALETTES,createRandomGradientStyle};
@@ -1,48 +1 @@
1
- function applySectionBlockHeader(headerEl, options) {
2
- if (!headerEl)
3
- return;
4
- const { headline = '', subtitle = '', description = '', badge, align = 'center', extraClassName, } = options;
5
- headerEl.className = [
6
- 'designbase-wc-section-block-header',
7
- `designbase-wc-section-block-header--${align}`,
8
- extraClassName,
9
- ]
10
- .filter(Boolean)
11
- .join(' ');
12
- let badgeEl = headerEl.querySelector('db-badge');
13
- if (badge?.text) {
14
- if (!badgeEl) {
15
- badgeEl = document.createElement('db-badge');
16
- badgeEl.className = 'designbase-wc-section-block-header__badge';
17
- headerEl.prepend(badgeEl);
18
- }
19
- badgeEl.removeAttribute('hidden');
20
- badgeEl.style.display = '';
21
- badgeEl.setAttribute('variant', badge.variant || 'primary');
22
- badgeEl.setAttribute('badge-style', badge.style || 'text');
23
- badgeEl.setAttribute('size', badge.size || 'm');
24
- badgeEl.textContent = badge.text;
25
- }
26
- else if (badgeEl) {
27
- badgeEl.textContent = '';
28
- badgeEl.setAttribute('hidden', '');
29
- badgeEl.style.display = 'none';
30
- }
31
- const headlineEl = headerEl.querySelector('h2');
32
- const subtitleEl = headerEl.querySelector('.designbase-wc-section-block-header__subtitle');
33
- const descriptionEl = headerEl.querySelector('.designbase-wc-section-block-header__description');
34
- if (headlineEl) {
35
- headlineEl.textContent = headline;
36
- headlineEl.hidden = !headline;
37
- }
38
- if (subtitleEl) {
39
- subtitleEl.textContent = subtitle;
40
- subtitleEl.hidden = !subtitle;
41
- }
42
- if (descriptionEl) {
43
- descriptionEl.textContent = description;
44
- descriptionEl.hidden = !description;
45
- }
46
- }
47
-
48
- export { applySectionBlockHeader };
1
+ function applySectionBlockHeader(e,t){if(!e)return;const{headline:n="",subtitle:i="",description:s="",badge:a,align:d="center",extraClassName:o}=t;e.className=["designbase-wc-section-block-header",`designbase-wc-section-block-header--${d}`,o].filter(Boolean).join(" ");let r=e.querySelector("db-badge");a?.text?(r||(r=document.createElement("db-badge"),r.className="designbase-wc-section-block-header__badge",e.prepend(r)),r.removeAttribute("hidden"),r.style.display="",r.setAttribute("variant",a.variant||"primary"),r.setAttribute("badge-style",a.style||"text"),r.setAttribute("size",a.size||"m"),r.textContent=a.text):r&&(r.textContent="",r.setAttribute("hidden",""),r.style.display="none");const c=e.querySelector("h2"),l=e.querySelector(".designbase-wc-section-block-header__subtitle"),b=e.querySelector(".designbase-wc-section-block-header__description");c&&(c.textContent=n,c.hidden=!n),l&&(l.textContent=i,l.hidden=!i),b&&(b.textContent=s,b.hidden=!s)}export{applySectionBlockHeader};
@@ -1,52 +1 @@
1
- function isBrowser() {
2
- return typeof document !== 'undefined';
3
- }
4
- /** 확인 대화상자를 띄우고, 확인 시 true / 취소(ESC·배경 포함) 시 false 로 resolve 합니다. */
5
- function confirm(options) {
6
- if (!isBrowser())
7
- return Promise.resolve(false);
8
- const { message, title, confirmText, cancelText, confirmVariant, variant, size, showIcon, initialFocus, closeOnEscape, closeOnBackdrop, } = options;
9
- const el = document.createElement('db-confirm');
10
- el.setAttribute('message', message);
11
- if (title)
12
- el.setAttribute('title', title);
13
- if (confirmText)
14
- el.setAttribute('confirm-text', confirmText);
15
- if (cancelText)
16
- el.setAttribute('cancel-text', cancelText);
17
- if (confirmVariant)
18
- el.setAttribute('confirm-variant', confirmVariant);
19
- if (variant)
20
- el.setAttribute('variant', variant);
21
- if (size)
22
- el.setAttribute('size', size);
23
- if (showIcon === false)
24
- el.setAttribute('show-icon', 'false');
25
- if (initialFocus)
26
- el.setAttribute('initial-focus', initialFocus);
27
- if (closeOnEscape === false)
28
- el.setAttribute('close-on-escape', 'false');
29
- if (closeOnBackdrop === false)
30
- el.setAttribute('close-on-backdrop', 'false');
31
- // 닫힌 상태(open=false)로 먼저 연결한 뒤 open 을 켜서 오버레이를 표시한다.
32
- document.body.appendChild(el);
33
- return new Promise((resolve) => {
34
- let settled = false;
35
- const finish = (result) => {
36
- if (settled)
37
- return;
38
- settled = true;
39
- el.removeEventListener('db-confirm', onConfirm);
40
- el.removeEventListener('db-cancel', onCancel);
41
- el.remove();
42
- resolve(result);
43
- };
44
- const onConfirm = () => finish(true);
45
- const onCancel = () => finish(false);
46
- el.addEventListener('db-confirm', onConfirm);
47
- el.addEventListener('db-cancel', onCancel);
48
- el.setAttribute('open', 'true');
49
- });
50
- }
51
-
52
- export { confirm };
1
+ function confirm(e){if(!function isBrowser(){return"undefined"!=typeof document}())return Promise.resolve(!1);const{message:t,title:n,confirmText:i,cancelText:r,confirmVariant:s,variant:o,size:c,showIcon:a,initialFocus:u,closeOnEscape:m,closeOnBackdrop:b}=e,d=document.createElement("db-confirm");return d.setAttribute("message",t),n&&d.setAttribute("title",n),i&&d.setAttribute("confirm-text",i),r&&d.setAttribute("cancel-text",r),s&&d.setAttribute("confirm-variant",s),o&&d.setAttribute("variant",o),c&&d.setAttribute("size",c),!1===a&&d.setAttribute("show-icon","false"),u&&d.setAttribute("initial-focus",u),!1===m&&d.setAttribute("close-on-escape","false"),!1===b&&d.setAttribute("close-on-backdrop","false"),document.body.appendChild(d),new Promise(e=>{let t=!1;const finish=n=>{t||(t=!0,d.removeEventListener("db-confirm",onConfirm),d.removeEventListener("db-cancel",onCancel),d.remove(),e(n))},onConfirm=()=>finish(!0),onCancel=()=>finish(!1);d.addEventListener("db-confirm",onConfirm),d.addEventListener("db-cancel",onCancel),d.setAttribute("open","true")})}export{confirm};