@innovastudio/contentbox 1.6.174 → 1.6.176
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/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@innovastudio/contentbox",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.176",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "public/contentbox/contentbox.esm.js",
|
|
7
7
|
"types": "index.d.ts",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"ws": "^8.13.0"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@innovastudio/contentbuilder": "^1.5.
|
|
62
|
+
"@innovastudio/contentbuilder": "^1.5.190",
|
|
63
63
|
"js-beautify": "^1.14.0",
|
|
64
64
|
"marked": "^17.0.0",
|
|
65
65
|
"sortablejs": "^1.15.2"
|
|
@@ -115901,6 +115901,9 @@ class CodeChat$1 {
|
|
|
115901
115901
|
this.systemModel = this.builder.systemModel;
|
|
115902
115902
|
}
|
|
115903
115903
|
this.codeModels = [{
|
|
115904
|
+
id: 'anthropic/claude-opus-4.5',
|
|
115905
|
+
label: 'Claude Opus 4.5'
|
|
115906
|
+
}, {
|
|
115904
115907
|
id: 'google/gemini-3-pro-preview',
|
|
115905
115908
|
label: 'Google Gemini 3 Pro Preview'
|
|
115906
115909
|
}, {
|
|
@@ -117915,6 +117918,10 @@ ${this.builder.html()}
|
|
|
117915
117918
|
TASK: ${task.description}
|
|
117916
117919
|
|
|
117917
117920
|
IMPORTANT: Follow the Best Practices in Content framework.
|
|
117921
|
+
${this.builder.editor ? `CRITICAL: This project uses the Content.css and Box framework, NOT Tailwind. ONLY use classes explicitly documented in this framework guide.
|
|
117922
|
+
DO NOT use Tailwind classes like gap-4, w-1/2, top-4, hover:scale-120, etc.` : `CRITICAL: This project uses the Content.css framework, NOT Tailwind. ONLY use classes explicitly documented in this framework guide.
|
|
117923
|
+
DO NOT use Tailwind classes like gap-4, w-1/2, top-4, hover:scale-120, etc.`}
|
|
117924
|
+
For flexibility, you can use inline styles or embedded <style> at the end of the generated HTML.
|
|
117918
117925
|
|
|
117919
117926
|
${imageContext}
|
|
117920
117927
|
${chatContext}
|
|
@@ -118782,6 +118789,87 @@ Use grayscale for minimalist design.
|
|
|
118782
118789
|
|
|
118783
118790
|
> **Editorial Style:** Stick to black, white, and grays for a clean, minimalist aesthetic. Use color sparingly for accents.
|
|
118784
118791
|
|
|
118792
|
+
` + `
|
|
118793
|
+
|
|
118794
|
+
### Animation
|
|
118795
|
+
|
|
118796
|
+
**Transition**
|
|
118797
|
+
|
|
118798
|
+
Classes: transition-none, transition, transition-colors, transition-opacity, transition-shadow, transition-transform, transition-all
|
|
118799
|
+
|
|
118800
|
+
**Duration**
|
|
118801
|
+
|
|
118802
|
+
Classes: duration-75, duration-100, duration-150, duration-200, duration-300, duration-500, duration-700, duration-1000
|
|
118803
|
+
|
|
118804
|
+
**Timing**
|
|
118805
|
+
|
|
118806
|
+
Classes: ease-linear, ease-in, ease-out, ease-in-out
|
|
118807
|
+
|
|
118808
|
+
**Delay**
|
|
118809
|
+
|
|
118810
|
+
Classes: delay-75, delay-100, delay-150, delay-200, delay-300, delay-500
|
|
118811
|
+
|
|
118812
|
+
**Scale**
|
|
118813
|
+
|
|
118814
|
+
Classes: scale-0, scale-50, scale-75, scale-90, scale-95, scale-100, scale-105, scale-110, scale-125, scale-150
|
|
118815
|
+
|
|
118816
|
+
**Rotate**
|
|
118817
|
+
|
|
118818
|
+
Classes: rotate-0, rotate-45, rotate-90, rotate-180
|
|
118819
|
+
|
|
118820
|
+
**Translate X**
|
|
118821
|
+
|
|
118822
|
+
Classes: translate-x-0, translate-x-1, translate-x-2, translate-x-4, translate-x-8
|
|
118823
|
+
|
|
118824
|
+
**Translate Y**
|
|
118825
|
+
|
|
118826
|
+
Classes: translate-y-0, translate-y-1, translate-y-2, translate-y-4, translate-y-8
|
|
118827
|
+
|
|
118828
|
+
**Skew**
|
|
118829
|
+
|
|
118830
|
+
Classes: skew-x-0, skew-x-3, skew-x-6, skew-y-0, skew-y-3, skew-y-6
|
|
118831
|
+
|
|
118832
|
+
**Overflow**
|
|
118833
|
+
|
|
118834
|
+
Classes: overflow-hidden, overflow-visible, overflow-scroll, overflow-auto
|
|
118835
|
+
|
|
118836
|
+
**Opacity**
|
|
118837
|
+
|
|
118838
|
+
Classes:
|
|
118839
|
+
|
|
118840
|
+
| Class | Color |
|
|
118841
|
+
| ------------ | ------------- |
|
|
118842
|
+
| '.opacity-0' | opacity: 0 |
|
|
118843
|
+
| '.opacity-2' | opacity: 0.02 |
|
|
118844
|
+
| '.opacity-4' | opacity: 0.04 |
|
|
118845
|
+
| '.opacity-5' | opacity: 0.05 |
|
|
118846
|
+
| '.opacity-6' | opacity: 0.06 |
|
|
118847
|
+
| '.opacity-8' | opacity: 0.07 |
|
|
118848
|
+
| '.opacity-10' | opacity: 0.1 |
|
|
118849
|
+
| '.opacity-12' | opacity: 0.12 |
|
|
118850
|
+
| '.opacity-15' | opacity: 0.15 |
|
|
118851
|
+
| '.opacity-20' | opacity: 0.2 |
|
|
118852
|
+
| '.opacity-25' | opacity: 0.25 |
|
|
118853
|
+
| '.opacity-30' | opacity: 0.3 |
|
|
118854
|
+
| '.opacity-35' | opacity: 0.35 |
|
|
118855
|
+
| '.opacity-40' | opacity: 0.4 |
|
|
118856
|
+
| '.opacity-45' | opacity: 0.45 |
|
|
118857
|
+
| '.opacity-50' | opacity: 0.5 |
|
|
118858
|
+
| '.opacity-55' | opacity: 0.55 |
|
|
118859
|
+
| '.opacity-60' | opacity: 0.6 |
|
|
118860
|
+
| '.opacity-65' | opacity: 0.65 |
|
|
118861
|
+
| '.opacity-70' | opacity: 0.7 |
|
|
118862
|
+
| '.opacity-75' | opacity: 0.75 |
|
|
118863
|
+
| '.opacity-80' | opacity: 0.8 |
|
|
118864
|
+
| '.opacity-85' | opacity: 0.85 |
|
|
118865
|
+
| '.opacity-90' | opacity: 0.9 |
|
|
118866
|
+
| '.opacity-95' | opacity: 0.95 |
|
|
118867
|
+
| '.opacity-100' | opacity: 1 |
|
|
118868
|
+
|
|
118869
|
+
**Animation keyframes**
|
|
118870
|
+
|
|
118871
|
+
Classes: spin, ping, pulse, bounce
|
|
118872
|
+
` + `
|
|
118785
118873
|
---
|
|
118786
118874
|
` + `
|
|
118787
118875
|
## Common Patterns
|
|
@@ -119240,6 +119328,180 @@ Remember: The goal is to create code blocks that are **self-contained**, **confl
|
|
|
119240
119328
|
</div>
|
|
119241
119329
|
`;
|
|
119242
119330
|
|
|
119331
|
+
const contextDesignGuide$1 = `
|
|
119332
|
+
# Design Directive:
|
|
119333
|
+
|
|
119334
|
+
## Purpose
|
|
119335
|
+
|
|
119336
|
+
This guide complements the Content Framework documentation. It explains how to create **diverse, creative designs** that go beyond default aesthetics while strictly adhering to framework utility classes.
|
|
119337
|
+
|
|
119338
|
+
## Core Philosophy: Design Freedom Within Constraints
|
|
119339
|
+
|
|
119340
|
+
The frameworks provide utility classes for structure and typography. To create rich, varied designs:
|
|
119341
|
+
|
|
119342
|
+
1. **Use framework classes** for all structural elements
|
|
119343
|
+
2. **Add inline styles** for colors, backgrounds, gradients, shadows, transforms, and animations
|
|
119344
|
+
3. **Create embedded styles** in '<style>...</style>' blocks at the end when needed for animations, transitions, or reusable patterns
|
|
119345
|
+
|
|
119346
|
+
**Example <style>: When needed for animations, transitions, or reusable patterns**
|
|
119347
|
+
|
|
119348
|
+
<div class="row">
|
|
119349
|
+
<div class="column">
|
|
119350
|
+
|
|
119351
|
+
<div class="featured-image">
|
|
119352
|
+
<img src="https://placehold.co/1600x700" alt="Featured Project">
|
|
119353
|
+
</div>
|
|
119354
|
+
|
|
119355
|
+
</div>
|
|
119356
|
+
</div>
|
|
119357
|
+
|
|
119358
|
+
<div class="row portfolio-row">
|
|
119359
|
+
<div class="column">
|
|
119360
|
+
|
|
119361
|
+
<div class="row-image">
|
|
119362
|
+
<img src="https://placehold.co/1200x900" alt="Digital Banking">
|
|
119363
|
+
</div>
|
|
119364
|
+
|
|
119365
|
+
</div>
|
|
119366
|
+
<div class="column">
|
|
119367
|
+
|
|
119368
|
+
<!-- Content -->
|
|
119369
|
+
|
|
119370
|
+
</div>
|
|
119371
|
+
</div>
|
|
119372
|
+
|
|
119373
|
+
<div class="row">
|
|
119374
|
+
|
|
119375
|
+
<div class="column">
|
|
119376
|
+
|
|
119377
|
+
<div class="p-12 bg-gray-50 hover-lift">
|
|
119378
|
+
<p class="size-18 leading-17 text-black pb-8">The level of professionalism and expertise demonstrated throughout the project was outstanding. Highly recommend to anyone looking for quality work.</p>
|
|
119379
|
+
<p class="size-14 font-semibold text-black pb-1">Michael Chen</p>
|
|
119380
|
+
<p class="size-13 text-gray-600 tracking-wide">Founder, Innovation Labs</p>
|
|
119381
|
+
</div>
|
|
119382
|
+
|
|
119383
|
+
</div>
|
|
119384
|
+
<div class="column">
|
|
119385
|
+
|
|
119386
|
+
<!-- Content -->
|
|
119387
|
+
|
|
119388
|
+
</div>
|
|
119389
|
+
</div>
|
|
119390
|
+
<style>
|
|
119391
|
+
/* Featured image */
|
|
119392
|
+
|
|
119393
|
+
.featured-image {
|
|
119394
|
+
width: 100%;
|
|
119395
|
+
aspect-ratio: 21/9;
|
|
119396
|
+
overflow: hidden;
|
|
119397
|
+
position: relative;
|
|
119398
|
+
background: #fafafa;
|
|
119399
|
+
}
|
|
119400
|
+
|
|
119401
|
+
.featured-image img {
|
|
119402
|
+
width: 100%;
|
|
119403
|
+
height: 100%;
|
|
119404
|
+
object-fit: cover;
|
|
119405
|
+
transition: transform 2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
119406
|
+
}
|
|
119407
|
+
|
|
119408
|
+
.featured-image:hover img {
|
|
119409
|
+
transform: scale(1.03);
|
|
119410
|
+
}
|
|
119411
|
+
|
|
119412
|
+
/* Row image */
|
|
119413
|
+
|
|
119414
|
+
.row-image {
|
|
119415
|
+
width: 100%;
|
|
119416
|
+
aspect-ratio: 4/3;
|
|
119417
|
+
overflow: hidden;
|
|
119418
|
+
position: relative;
|
|
119419
|
+
background: #fafafa;
|
|
119420
|
+
}
|
|
119421
|
+
|
|
119422
|
+
.row-image img {
|
|
119423
|
+
width: 100%;
|
|
119424
|
+
height: 100%;
|
|
119425
|
+
object-fit: cover;
|
|
119426
|
+
transition: transform 1.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
119427
|
+
}
|
|
119428
|
+
|
|
119429
|
+
.portfolio-row:hover .row-image img {
|
|
119430
|
+
transform: scale(1.05);
|
|
119431
|
+
}
|
|
119432
|
+
|
|
119433
|
+
/* Smooth hover animations */
|
|
119434
|
+
.hover-lift {
|
|
119435
|
+
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
119436
|
+
}
|
|
119437
|
+
|
|
119438
|
+
.hover-lift:hover {
|
|
119439
|
+
transform: translateY(-4px);
|
|
119440
|
+
}
|
|
119441
|
+
</style>
|
|
119442
|
+
|
|
119443
|
+
|
|
119444
|
+
## Key Aesthetic Philosophy:
|
|
119445
|
+
**Swiss/Minimalist meets Portfolio Presentation** - Clean, grid-based, information-focused design where content hierarchy is created through scale, weight, and spacing rather than color or decoration. Every element serves a functional purpose. Photography is professional and high-quality. Typography creates drama through size contrast. The overall feel is sophisticated, professional, and timeless.
|
|
119446
|
+
|
|
119447
|
+
## Design Characteristics:
|
|
119448
|
+
|
|
119449
|
+
### Typography Treatment
|
|
119450
|
+
- **Extreme scale contrast**: Massive headlines (80px-140px) paired with tiny metadata text
|
|
119451
|
+
- **Version/number typography**: Large numbers (like "1.1", "2.4", "2027") used as design elements
|
|
119452
|
+
- **Mix of weights**: Bold project names with light secondary information
|
|
119453
|
+
|
|
119454
|
+
### Layout Patterns
|
|
119455
|
+
- **Horizontal information bars**: Thin lines (1px-2px) separating sections or containing metadata
|
|
119456
|
+
- **Asymmetric content placement**: Image on left (40-45%), text/info on right (55-60%)
|
|
119457
|
+
- **Card-based presentation**: Content contained in white cards floating on gray backgrounds
|
|
119458
|
+
- **Top metadata strips**: Small text in corners (studio name, project type, year)
|
|
119459
|
+
- **Multi-column text blocks**: Body copy split into 2-3 narrow columns for readability
|
|
119460
|
+
|
|
119461
|
+
### Image Treatment
|
|
119462
|
+
- **Photography as hero**: Large, high-quality images dominating the layout (not decorative)
|
|
119463
|
+
- **Clean crops**: Images in rectangular containers, no fancy shapes
|
|
119464
|
+
- **Generous padding**: White space around images, never cramping them
|
|
119465
|
+
- **Grid systems for galleries**: Even-sized thumbnails in rows (4x2, 4x4 grids)
|
|
119466
|
+
- **Product-on-white aesthetic**: Clean product photography on pure white backgrounds
|
|
119467
|
+
|
|
119468
|
+
### Color & Background
|
|
119469
|
+
- **Pure white dominant**: Clean #ffffff backgrounds, not cream or off-white
|
|
119470
|
+
- **Minimal color usage**: Mostly black text on white, with occasional single accent color
|
|
119471
|
+
- **Light gray backgrounds**: #f5f5f5 or #e5e5e5 for page backgrounds behind white cards
|
|
119472
|
+
- **Strategic black sections**: Full black backgrounds for contrast moments
|
|
119473
|
+
- **Accent color blocks**: Small pops of color (red, orange) used sparingly as highlights
|
|
119474
|
+
|
|
119475
|
+
### Information Architecture
|
|
119476
|
+
- **Numbered lists**: "1. OVERVIEW", "2. SERVICES", etc. as section headers
|
|
119477
|
+
- **Metadata in lines**: "Client Name | Project Type | Year" separated by pipes or lines
|
|
119478
|
+
- **Small label categories**: Uppercase 11px labels like "SPECIALISED IN", "CONTACT", "ABOUT"
|
|
119479
|
+
- **Horizontal dividing lines**: Thin rules (1px) creating visual sections
|
|
119480
|
+
- **List-style information**: Stacked items with consistent spacing and alignment
|
|
119481
|
+
|
|
119482
|
+
### Spatial Organization
|
|
119483
|
+
- **Air and breathing room**: Generous margins and padding throughout
|
|
119484
|
+
- **Contained sections**: Content lives in defined rectangular areas
|
|
119485
|
+
- **Aligned grids**: Everything aligns to invisible grid lines
|
|
119486
|
+
- **Consistent gaps**: Equal spacing between elements (20px, 30px, 40px)
|
|
119487
|
+
- **Edge-to-edge in black sections**: Dark sections can be full-bleed
|
|
119488
|
+
|
|
119489
|
+
### Professional Polish
|
|
119490
|
+
- **Precise alignment**: Everything lines up perfectly (left edges, baselines, top edges)
|
|
119491
|
+
- **Consistent typography system**: Limited font sizes used repeatedly (12px, 14px, 16px, 32px, 80px, 120px)
|
|
119492
|
+
- **No decorative elements**: Everything serves a purpose, nothing ornamental
|
|
119493
|
+
- **Clean hover states**: Understated interactions, not flashy
|
|
119494
|
+
|
|
119495
|
+
### What to AVOID:
|
|
119496
|
+
- ❌ Gradients (use solid colors only)
|
|
119497
|
+
- ❌ Rounded corners on everything (keep rectangular, maybe subtle 4-8px radius on cards)
|
|
119498
|
+
- ❌ Drop shadows (use very subtle if any, like 0 2px 8px rgba(0,0,0,0.04))
|
|
119499
|
+
- ❌ Overly decorative fonts (stick to clean system-ui)
|
|
119500
|
+
- ❌ Busy patterns or textures
|
|
119501
|
+
- ❌ Too many accent colors (pick one, use sparingly)
|
|
119502
|
+
- ❌ Cramped spacing (always err on the side of more whitespace)
|
|
119503
|
+
`;
|
|
119504
|
+
|
|
119243
119505
|
class ContentBuilder {
|
|
119244
119506
|
constructor(opts = {}) {
|
|
119245
119507
|
let defaults = {
|
|
@@ -120526,7 +120788,7 @@ class ContentBuilder {
|
|
|
120526
120788
|
this.ShortcutInfo = new ShortcutInfo(this);
|
|
120527
120789
|
if (!this.opts.isContentBox) {
|
|
120528
120790
|
this.codechat = new CodeChat$1({
|
|
120529
|
-
context: contextContentFramework$1 + contextCodeBlock$1
|
|
120791
|
+
context: contextContentFramework$1 + contextCodeBlock$1 + contextDesignGuide$1
|
|
120530
120792
|
}, this);
|
|
120531
120793
|
if (this.startAIAssistant) {
|
|
120532
120794
|
this.openAIAssistant();
|
|
@@ -143387,6 +143649,9 @@ class CodeChat {
|
|
|
143387
143649
|
}
|
|
143388
143650
|
|
|
143389
143651
|
this.codeModels = [{
|
|
143652
|
+
id: 'anthropic/claude-opus-4.5',
|
|
143653
|
+
label: 'Claude Opus 4.5'
|
|
143654
|
+
}, {
|
|
143390
143655
|
id: 'google/gemini-3-pro-preview',
|
|
143391
143656
|
label: 'Google Gemini 3 Pro Preview'
|
|
143392
143657
|
}, {
|
|
@@ -145414,6 +145679,10 @@ ${this.builder.html()}
|
|
|
145414
145679
|
TASK: ${task.description}
|
|
145415
145680
|
|
|
145416
145681
|
IMPORTANT: Follow the Best Practices in Content framework.
|
|
145682
|
+
${this.builder.editor ? `CRITICAL: This project uses the Content.css and Box framework, NOT Tailwind. ONLY use classes explicitly documented in this framework guide.
|
|
145683
|
+
DO NOT use Tailwind classes like gap-4, w-1/2, top-4, hover:scale-120, etc.` : `CRITICAL: This project uses the Content.css framework, NOT Tailwind. ONLY use classes explicitly documented in this framework guide.
|
|
145684
|
+
DO NOT use Tailwind classes like gap-4, w-1/2, top-4, hover:scale-120, etc.`}
|
|
145685
|
+
For flexibility, you can use inline styles or embedded <style> at the end of the generated HTML.
|
|
145417
145686
|
|
|
145418
145687
|
${imageContext}
|
|
145419
145688
|
${chatContext}
|
|
@@ -146311,6 +146580,87 @@ Use grayscale for minimalist design.
|
|
|
146311
146580
|
|
|
146312
146581
|
> **Editorial Style:** Stick to black, white, and grays for a clean, minimalist aesthetic. Use color sparingly for accents.
|
|
146313
146582
|
|
|
146583
|
+
` + `
|
|
146584
|
+
|
|
146585
|
+
### Animation
|
|
146586
|
+
|
|
146587
|
+
**Transition**
|
|
146588
|
+
|
|
146589
|
+
Classes: transition-none, transition, transition-colors, transition-opacity, transition-shadow, transition-transform, transition-all
|
|
146590
|
+
|
|
146591
|
+
**Duration**
|
|
146592
|
+
|
|
146593
|
+
Classes: duration-75, duration-100, duration-150, duration-200, duration-300, duration-500, duration-700, duration-1000
|
|
146594
|
+
|
|
146595
|
+
**Timing**
|
|
146596
|
+
|
|
146597
|
+
Classes: ease-linear, ease-in, ease-out, ease-in-out
|
|
146598
|
+
|
|
146599
|
+
**Delay**
|
|
146600
|
+
|
|
146601
|
+
Classes: delay-75, delay-100, delay-150, delay-200, delay-300, delay-500
|
|
146602
|
+
|
|
146603
|
+
**Scale**
|
|
146604
|
+
|
|
146605
|
+
Classes: scale-0, scale-50, scale-75, scale-90, scale-95, scale-100, scale-105, scale-110, scale-125, scale-150
|
|
146606
|
+
|
|
146607
|
+
**Rotate**
|
|
146608
|
+
|
|
146609
|
+
Classes: rotate-0, rotate-45, rotate-90, rotate-180
|
|
146610
|
+
|
|
146611
|
+
**Translate X**
|
|
146612
|
+
|
|
146613
|
+
Classes: translate-x-0, translate-x-1, translate-x-2, translate-x-4, translate-x-8
|
|
146614
|
+
|
|
146615
|
+
**Translate Y**
|
|
146616
|
+
|
|
146617
|
+
Classes: translate-y-0, translate-y-1, translate-y-2, translate-y-4, translate-y-8
|
|
146618
|
+
|
|
146619
|
+
**Skew**
|
|
146620
|
+
|
|
146621
|
+
Classes: skew-x-0, skew-x-3, skew-x-6, skew-y-0, skew-y-3, skew-y-6
|
|
146622
|
+
|
|
146623
|
+
**Overflow**
|
|
146624
|
+
|
|
146625
|
+
Classes: overflow-hidden, overflow-visible, overflow-scroll, overflow-auto
|
|
146626
|
+
|
|
146627
|
+
**Opacity**
|
|
146628
|
+
|
|
146629
|
+
Classes:
|
|
146630
|
+
|
|
146631
|
+
| Class | Color |
|
|
146632
|
+
| ------------ | ------------- |
|
|
146633
|
+
| '.opacity-0' | opacity: 0 |
|
|
146634
|
+
| '.opacity-2' | opacity: 0.02 |
|
|
146635
|
+
| '.opacity-4' | opacity: 0.04 |
|
|
146636
|
+
| '.opacity-5' | opacity: 0.05 |
|
|
146637
|
+
| '.opacity-6' | opacity: 0.06 |
|
|
146638
|
+
| '.opacity-8' | opacity: 0.07 |
|
|
146639
|
+
| '.opacity-10' | opacity: 0.1 |
|
|
146640
|
+
| '.opacity-12' | opacity: 0.12 |
|
|
146641
|
+
| '.opacity-15' | opacity: 0.15 |
|
|
146642
|
+
| '.opacity-20' | opacity: 0.2 |
|
|
146643
|
+
| '.opacity-25' | opacity: 0.25 |
|
|
146644
|
+
| '.opacity-30' | opacity: 0.3 |
|
|
146645
|
+
| '.opacity-35' | opacity: 0.35 |
|
|
146646
|
+
| '.opacity-40' | opacity: 0.4 |
|
|
146647
|
+
| '.opacity-45' | opacity: 0.45 |
|
|
146648
|
+
| '.opacity-50' | opacity: 0.5 |
|
|
146649
|
+
| '.opacity-55' | opacity: 0.55 |
|
|
146650
|
+
| '.opacity-60' | opacity: 0.6 |
|
|
146651
|
+
| '.opacity-65' | opacity: 0.65 |
|
|
146652
|
+
| '.opacity-70' | opacity: 0.7 |
|
|
146653
|
+
| '.opacity-75' | opacity: 0.75 |
|
|
146654
|
+
| '.opacity-80' | opacity: 0.8 |
|
|
146655
|
+
| '.opacity-85' | opacity: 0.85 |
|
|
146656
|
+
| '.opacity-90' | opacity: 0.9 |
|
|
146657
|
+
| '.opacity-95' | opacity: 0.95 |
|
|
146658
|
+
| '.opacity-100' | opacity: 1 |
|
|
146659
|
+
|
|
146660
|
+
**Animation keyframes**
|
|
146661
|
+
|
|
146662
|
+
Classes: spin, ping, pulse, bounce
|
|
146663
|
+
` + `
|
|
146314
146664
|
---
|
|
146315
146665
|
` + `
|
|
146316
146666
|
## Common Patterns
|
|
@@ -147355,45 +147705,109 @@ The frameworks provide utility classes for structure and typography. To create r
|
|
|
147355
147705
|
<!-- Content -->
|
|
147356
147706
|
</div>
|
|
147357
147707
|
|
|
147358
|
-
<!--
|
|
147708
|
+
<!-- Section 3 -->
|
|
147709
|
+
<div class="is-section is-box is-section-100 type-system-ui">
|
|
147710
|
+
|
|
147711
|
+
<div class="is-container leading-14 size-18 is-content-1100">
|
|
147712
|
+
|
|
147713
|
+
<div class="row">
|
|
147714
|
+
<div class="column">
|
|
147715
|
+
|
|
147716
|
+
<div class="featured-image">
|
|
147717
|
+
<img src="https://placehold.co/1600x700" alt="Featured Project">
|
|
147718
|
+
</div>
|
|
147719
|
+
|
|
147720
|
+
</div>
|
|
147721
|
+
</div>
|
|
147722
|
+
|
|
147723
|
+
<div class="row portfolio-row">
|
|
147724
|
+
<div class="column">
|
|
147725
|
+
|
|
147726
|
+
<div class="row-image">
|
|
147727
|
+
<img src="https://placehold.co/1200x900" alt="Digital Banking">
|
|
147728
|
+
</div>
|
|
147359
147729
|
|
|
147360
|
-
|
|
147730
|
+
</div>
|
|
147731
|
+
<div class="column">
|
|
147732
|
+
|
|
147733
|
+
<!-- Content -->
|
|
147734
|
+
|
|
147735
|
+
</div>
|
|
147736
|
+
</div>
|
|
147737
|
+
|
|
147738
|
+
<div class="row">
|
|
147739
|
+
|
|
147740
|
+
<div class="column">
|
|
147741
|
+
|
|
147742
|
+
<div class="p-12 bg-gray-50 hover-lift">
|
|
147743
|
+
<p class="size-18 leading-17 text-black pb-8">The level of professionalism and expertise demonstrated throughout the project was outstanding. Highly recommend to anyone looking for quality work.</p>
|
|
147744
|
+
<p class="size-14 font-semibold text-black pb-1">Michael Chen</p>
|
|
147745
|
+
<p class="size-13 text-gray-600 tracking-wide">Founder, Innovation Labs</p>
|
|
147746
|
+
</div>
|
|
147747
|
+
|
|
147748
|
+
</div>
|
|
147749
|
+
<div class="column">
|
|
147750
|
+
|
|
147751
|
+
<!-- Content -->
|
|
147752
|
+
|
|
147753
|
+
</div>
|
|
147754
|
+
</div>
|
|
147755
|
+
</div>
|
|
147756
|
+
</div>
|
|
147757
|
+
|
|
147758
|
+
<!-- Embedded Styke -->
|
|
147361
147759
|
<style>
|
|
147362
|
-
|
|
147363
|
-
|
|
147364
|
-
|
|
147365
|
-
|
|
147366
|
-
|
|
147367
|
-
}
|
|
147368
|
-
50% {
|
|
147369
|
-
opacity: 0.8;
|
|
147760
|
+
/* Subtle hover zoom for background images */
|
|
147761
|
+
.is-overlay-bg {
|
|
147762
|
+
transition: transform 1s ease;
|
|
147763
|
+
}
|
|
147764
|
+
.is-box:hover .is-overlay-bg {
|
|
147370
147765
|
transform: scale(1.05);
|
|
147371
147766
|
}
|
|
147372
|
-
}
|
|
147373
147767
|
|
|
147374
|
-
|
|
147375
|
-
|
|
147376
|
-
|
|
147377
|
-
|
|
147378
|
-
|
|
147768
|
+
/* Featured image */
|
|
147769
|
+
.featured-image {
|
|
147770
|
+
width: 100%;
|
|
147771
|
+
aspect-ratio: 21/9;
|
|
147772
|
+
overflow: hidden;
|
|
147773
|
+
position: relative;
|
|
147774
|
+
background: #fafafa;
|
|
147379
147775
|
}
|
|
147380
|
-
|
|
147381
|
-
|
|
147776
|
+
.featured-image img {
|
|
147777
|
+
width: 100%;
|
|
147778
|
+
height: 100%;
|
|
147779
|
+
object-fit: cover;
|
|
147780
|
+
transition: transform 2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
147781
|
+
}
|
|
147782
|
+
.featured-image:hover img {
|
|
147783
|
+
transform: scale(1.03);
|
|
147382
147784
|
}
|
|
147383
|
-
}
|
|
147384
147785
|
|
|
147385
|
-
|
|
147386
|
-
|
|
147387
|
-
|
|
147786
|
+
/* Row image */
|
|
147787
|
+
.row-image {
|
|
147788
|
+
width: 100%;
|
|
147789
|
+
aspect-ratio: 4/3;
|
|
147790
|
+
overflow: hidden;
|
|
147791
|
+
position: relative;
|
|
147792
|
+
background: #fafafa;
|
|
147388
147793
|
}
|
|
147389
|
-
|
|
147390
|
-
|
|
147794
|
+
.row-image img {
|
|
147795
|
+
width: 100%;
|
|
147796
|
+
height: 100%;
|
|
147797
|
+
object-fit: cover;
|
|
147798
|
+
transition: transform 1.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
147799
|
+
}
|
|
147800
|
+
.portfolio-row:hover .row-image img {
|
|
147801
|
+
transform: scale(1.05);
|
|
147391
147802
|
}
|
|
147392
|
-
}
|
|
147393
147803
|
|
|
147394
|
-
|
|
147395
|
-
|
|
147396
|
-
|
|
147804
|
+
/* Smooth hover animations */
|
|
147805
|
+
.hover-lift {
|
|
147806
|
+
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
147807
|
+
}
|
|
147808
|
+
.hover-lift:hover {
|
|
147809
|
+
transform: translateY(-4px);
|
|
147810
|
+
}
|
|
147397
147811
|
</style>
|
|
147398
147812
|
|
|
147399
147813
|
|
|
@@ -147425,9 +147839,9 @@ The frameworks provide utility classes for structure and typography. To create r
|
|
|
147425
147839
|
- **Pure white dominant**: Clean #ffffff backgrounds, not cream or off-white
|
|
147426
147840
|
- **Minimal color usage**: Mostly black text on white, with occasional single accent color
|
|
147427
147841
|
- **Light gray backgrounds**: #f5f5f5 or #e5e5e5 for page backgrounds behind white cards
|
|
147428
|
-
- **Strategic black sections**: Full black backgrounds for contrast moments
|
|
147429
|
-
- **Accent color blocks**: Small pops of color (red, orange) used sparingly as highlights
|
|
147430
|
-
|
|
147842
|
+
` + // - **Strategic black sections**: Full black backgrounds for contrast moments
|
|
147843
|
+
// - **Accent color blocks**: Small pops of color (red, orange) used sparingly as highlights
|
|
147844
|
+
`
|
|
147431
147845
|
### Information Architecture
|
|
147432
147846
|
- **Numbered lists**: "1. OVERVIEW", "2. SERVICES", etc. as section headers
|
|
147433
147847
|
- **Metadata in lines**: "Client Name | Project Type | Year" separated by pipes or lines
|
|
@@ -157480,7 +157894,8 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
|
|
|
157480
157894
|
}
|
|
157481
157895
|
});
|
|
157482
157896
|
arrSections.forEach(section => {
|
|
157483
|
-
// Code Blocks Handling
|
|
157897
|
+
if (!section.classList.contains('is-section')) return; // Code Blocks Handling
|
|
157898
|
+
|
|
157484
157899
|
let codeBlocks = section.querySelectorAll('[data-html]');
|
|
157485
157900
|
codeBlocks.forEach(element => {
|
|
157486
157901
|
let html = decodeURIComponent(element.getAttribute('data-html')); // Original code is stored in data-html attribute
|
|
@@ -158317,6 +158732,8 @@ Add an image for each feature.`, 'Create a new block showcasing a photo gallery
|
|
|
158317
158732
|
// Add missing is-box class for full width (non splitted) section
|
|
158318
158733
|
if (!section.querySelector('.is-box')) {
|
|
158319
158734
|
section.classList.add('is-box');
|
|
158735
|
+
} else {
|
|
158736
|
+
section.classList.remove('is-box');
|
|
158320
158737
|
}
|
|
158321
158738
|
|
|
158322
158739
|
const containers = section.querySelectorAll('.is-container');
|