@bookklik/senangstart-css 0.1.3 → 0.1.4
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/dist/senangstart-css.js +38 -8
- package/dist/senangstart-css.min.js +24 -3
- package/docs/.vitepress/cache/deps/_metadata.json +7 -28
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +9432 -284
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +4 -4
- package/docs/.vitepress/config.js +183 -91
- package/docs/.vitepress/dist/404.html +5 -5
- package/docs/.vitepress/dist/assets/{app.CwVZm472.js → app.DBXoyO4w.js} +1 -1
- package/docs/.vitepress/dist/assets/chunks/framework.I305HrzY.js +19 -0
- package/docs/.vitepress/dist/assets/chunks/theme.CaXH1t3X.js +1 -0
- package/docs/.vitepress/dist/assets/{examples_cards.md.D4i0phvj.js → examples_cards.md.BCzaqSD6.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_cards.md.D4i0phvj.lean.js → examples_cards.md.BCzaqSD6.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_forms.md.BnsjqHST.js → examples_forms.md.DOjr9LrG.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_forms.md.BnsjqHST.lean.js → examples_forms.md.DOjr9LrG.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_hero.md.CCcb2x8Y.js → examples_hero.md.CAorji-Y.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_hero.md.CCcb2x8Y.lean.js → examples_hero.md.CAorji-Y.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_index.md.Dj7lqhZt.js → examples_index.md.BjUNsTob.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_index.md.Dj7lqhZt.lean.js → examples_index.md.BjUNsTob.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_navigation.md.CppyHbnP.js → examples_navigation.md.DvL-Yv_5.js} +1 -1
- package/docs/.vitepress/dist/assets/{examples_navigation.md.CppyHbnP.lean.js → examples_navigation.md.DvL-Yv_5.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_cdn.md.BzsOep2E.js → guide_cdn.md.Bbb7-icp.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_cdn.md.BzsOep2E.lean.js → guide_cdn.md.Bbb7-icp.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_cli.md.zXEKk-bu.js → guide_cli.md.yLsOZ7NL.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_cli.md.zXEKk-bu.lean.js → guide_cli.md.yLsOZ7NL.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_configuration.md.D2JZzhKm.js → guide_configuration.md.DN4FfKw4.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_configuration.md.D2JZzhKm.lean.js → guide_configuration.md.DN4FfKw4.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/guide_dark-mode.md.D6UJvQtM.js +69 -0
- package/docs/.vitepress/dist/assets/guide_dark-mode.md.D6UJvQtM.lean.js +1 -0
- package/docs/.vitepress/dist/assets/{guide_getting-started.md.to1dkMR9.js → guide_getting-started.md.K5nA8wXY.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_getting-started.md.to1dkMR9.lean.js → guide_getting-started.md.K5nA8wXY.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_index.md.C1xk2lBl.js → guide_index.md.B0lRU150.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_index.md.C1xk2lBl.lean.js → guide_index.md.B0lRU150.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_natural-scale.md.D1oVRN5V.js → guide_natural-scale.md.vvauT7U1.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_natural-scale.md.D1oVRN5V.lean.js → guide_natural-scale.md.vvauT7U1.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_philosophy.md.DPyyMH8d.js → guide_philosophy.md.mOb9kp32.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_philosophy.md.DPyyMH8d.lean.js → guide_philosophy.md.mOb9kp32.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_responsive.md.wksOAMT5.js → guide_responsive.md.C7cF-4cR.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_responsive.md.wksOAMT5.lean.js → guide_responsive.md.C7cF-4cR.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_states.md.DRjYOZDJ.js → guide_states.md.CwtGEGHB.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_states.md.DRjYOZDJ.lean.js → guide_states.md.CwtGEGHB.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_tri-attribute.md.CoFqfmPZ.js → guide_tri-attribute.md.CpjJLEMP.js} +1 -1
- package/docs/.vitepress/dist/assets/{guide_tri-attribute.md.CoFqfmPZ.lean.js → guide_tri-attribute.md.CpjJLEMP.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{index.md.CUZJzNzP.js → index.md.mYp6_S5X.js} +1 -1
- package/docs/.vitepress/dist/assets/{index.md.CUZJzNzP.lean.js → index.md.mYp6_S5X.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/ms_examples_cards.md.CaE5JNAs.js +84 -0
- package/docs/.vitepress/dist/assets/ms_examples_cards.md.CaE5JNAs.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_examples_forms.md.VvDzMzxF.js +169 -0
- package/docs/.vitepress/dist/assets/ms_examples_forms.md.VvDzMzxF.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_examples_hero.md.DC4c3kKW.js +118 -0
- package/docs/.vitepress/dist/assets/ms_examples_hero.md.DC4c3kKW.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_examples_index.md.C13ShcjA.js +52 -0
- package/docs/.vitepress/dist/assets/ms_examples_index.md.C13ShcjA.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_examples_navigation.md.BPtVjKbk.js +106 -0
- package/docs/.vitepress/dist/assets/ms_examples_navigation.md.BPtVjKbk.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_cdn.md.tZFpEjTS.js +30 -0
- package/docs/.vitepress/dist/assets/ms_guide_cdn.md.tZFpEjTS.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_cli.md.DBjxv3-o.js +44 -0
- package/docs/.vitepress/dist/assets/ms_guide_cli.md.DBjxv3-o.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_configuration.md.CyYNqREm.js +79 -0
- package/docs/.vitepress/dist/assets/ms_guide_configuration.md.CyYNqREm.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_dark-mode.md.DWDWvzzv.js +69 -0
- package/docs/.vitepress/dist/assets/ms_guide_dark-mode.md.DWDWvzzv.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_getting-started.md.WoQwRhlY.js +47 -0
- package/docs/.vitepress/dist/assets/ms_guide_getting-started.md.WoQwRhlY.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_index.md.pHpXZMmU.js +3 -0
- package/docs/.vitepress/dist/assets/ms_guide_index.md.pHpXZMmU.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_natural-scale.md.BiUfU-TH.js +22 -0
- package/docs/.vitepress/dist/assets/ms_guide_natural-scale.md.BiUfU-TH.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_philosophy.md.hf3SG2Ts.js +7 -0
- package/docs/.vitepress/dist/assets/ms_guide_philosophy.md.hf3SG2Ts.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_responsive.md.C4yS3zzM.js +57 -0
- package/docs/.vitepress/dist/assets/ms_guide_responsive.md.C4yS3zzM.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_states.md.DkDEjPdC.js +77 -0
- package/docs/.vitepress/dist/assets/ms_guide_states.md.DkDEjPdC.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_guide_tri-attribute.md.C3Es_V5J.js +45 -0
- package/docs/.vitepress/dist/assets/ms_guide_tri-attribute.md.C3Es_V5J.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_index.md.Bmo9il08.js +7 -0
- package/docs/.vitepress/dist/assets/ms_index.md.Bmo9il08.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_reference_breakpoints.md.DR7i_--b.js +48 -0
- package/docs/.vitepress/dist/assets/ms_reference_breakpoints.md.DR7i_--b.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_reference_colors.md.06ZYiMcJ.js +17 -0
- package/docs/.vitepress/dist/assets/ms_reference_colors.md.06ZYiMcJ.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_reference_layout.md.NGL6A5SR.js +13 -0
- package/docs/.vitepress/dist/assets/ms_reference_layout.md.NGL6A5SR.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_reference_space.md.BG5YQ-09.js +24 -0
- package/docs/.vitepress/dist/assets/ms_reference_space.md.BG5YQ-09.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_reference_spacing.md.XmXLLPOZ.js +32 -0
- package/docs/.vitepress/dist/assets/ms_reference_spacing.md.XmXLLPOZ.lean.js +1 -0
- package/docs/.vitepress/dist/assets/ms_reference_visual.md.BVOlkEqc.js +22 -0
- package/docs/.vitepress/dist/assets/ms_reference_visual.md.BVOlkEqc.lean.js +1 -0
- package/docs/.vitepress/dist/assets/{reference_breakpoints.md.BEhuwXBS.js → reference_breakpoints.md.BRbG8Fzi.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_breakpoints.md.BEhuwXBS.lean.js → reference_breakpoints.md.BRbG8Fzi.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_colors.md.o5ltImYJ.js → reference_colors.md.C7j7dSO1.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_colors.md.o5ltImYJ.lean.js → reference_colors.md.C7j7dSO1.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_layout.md.DqSoofMZ.js → reference_layout.md.BWJ5NxSp.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_layout.md.DqSoofMZ.lean.js → reference_layout.md.BWJ5NxSp.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_space.md.luOYAfQg.js → reference_space.md.DCsqfTWb.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_space.md.luOYAfQg.lean.js → reference_space.md.DCsqfTWb.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_spacing.md.DdsDhDhS.js → reference_spacing.md.BInFD8gd.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_spacing.md.DdsDhDhS.lean.js → reference_spacing.md.BInFD8gd.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_visual.md.DZFvxgPk.js → reference_visual.md.BRK7S9T1.js} +1 -1
- package/docs/.vitepress/dist/assets/{reference_visual.md.DZFvxgPk.lean.js → reference_visual.md.BRK7S9T1.lean.js} +1 -1
- package/docs/.vitepress/dist/assets/{style.BuMqNgkb.css → style.D82StYDI.css} +1 -1
- package/docs/.vitepress/dist/examples/cards.html +9 -9
- package/docs/.vitepress/dist/examples/forms.html +9 -9
- package/docs/.vitepress/dist/examples/hero.html +9 -9
- package/docs/.vitepress/dist/examples/index.html +9 -9
- package/docs/.vitepress/dist/examples/navigation.html +9 -9
- package/docs/.vitepress/dist/guide/cdn.html +10 -10
- package/docs/.vitepress/dist/guide/cli.html +9 -9
- package/docs/.vitepress/dist/guide/configuration.html +9 -9
- package/docs/.vitepress/dist/guide/dark-mode.html +93 -0
- package/docs/.vitepress/dist/guide/getting-started.html +9 -9
- package/docs/.vitepress/dist/guide/index.html +9 -9
- package/docs/.vitepress/dist/guide/natural-scale.html +9 -9
- package/docs/.vitepress/dist/guide/philosophy.html +9 -9
- package/docs/.vitepress/dist/guide/responsive.html +9 -9
- package/docs/.vitepress/dist/guide/states.html +10 -10
- package/docs/.vitepress/dist/guide/tri-attribute.html +9 -9
- package/docs/.vitepress/dist/hashmap.json +1 -1
- package/docs/.vitepress/dist/index.html +9 -9
- package/docs/.vitepress/dist/ms/examples/cards.html +108 -0
- package/docs/.vitepress/dist/ms/examples/forms.html +193 -0
- package/docs/.vitepress/dist/ms/examples/hero.html +142 -0
- package/docs/.vitepress/dist/ms/examples/index.html +76 -0
- package/docs/.vitepress/dist/ms/examples/navigation.html +130 -0
- package/docs/.vitepress/dist/ms/guide/cdn.html +54 -0
- package/docs/.vitepress/dist/ms/guide/cli.html +68 -0
- package/docs/.vitepress/dist/ms/guide/configuration.html +103 -0
- package/docs/.vitepress/dist/ms/guide/dark-mode.html +93 -0
- package/docs/.vitepress/dist/ms/guide/getting-started.html +71 -0
- package/docs/.vitepress/dist/ms/guide/index.html +27 -0
- package/docs/.vitepress/dist/ms/guide/natural-scale.html +46 -0
- package/docs/.vitepress/dist/ms/guide/philosophy.html +31 -0
- package/docs/.vitepress/dist/ms/guide/responsive.html +81 -0
- package/docs/.vitepress/dist/ms/guide/states.html +101 -0
- package/docs/.vitepress/dist/ms/guide/tri-attribute.html +69 -0
- package/docs/.vitepress/dist/ms/index.html +31 -0
- package/docs/.vitepress/dist/ms/reference/breakpoints.html +72 -0
- package/docs/.vitepress/dist/ms/reference/colors.html +41 -0
- package/docs/.vitepress/dist/ms/reference/layout.html +37 -0
- package/docs/.vitepress/dist/ms/reference/space.html +48 -0
- package/docs/.vitepress/dist/ms/reference/spacing.html +56 -0
- package/docs/.vitepress/dist/ms/reference/visual.html +46 -0
- package/docs/.vitepress/dist/reference/breakpoints.html +9 -9
- package/docs/.vitepress/dist/reference/colors.html +9 -9
- package/docs/.vitepress/dist/reference/layout.html +9 -9
- package/docs/.vitepress/dist/reference/space.html +9 -9
- package/docs/.vitepress/dist/reference/spacing.html +9 -9
- package/docs/.vitepress/dist/reference/visual.html +9 -9
- package/docs/guide/dark-mode.md +152 -0
- package/docs/ms/examples/cards.md +116 -0
- package/docs/ms/examples/forms.md +207 -0
- package/docs/ms/examples/hero.md +150 -0
- package/docs/ms/examples/index.md +87 -0
- package/docs/ms/examples/navigation.md +144 -0
- package/docs/ms/guide/cdn.md +110 -0
- package/docs/ms/guide/cli.md +174 -0
- package/docs/ms/guide/configuration.md +152 -0
- package/docs/ms/guide/dark-mode.md +152 -0
- package/docs/ms/guide/getting-started.md +130 -0
- package/docs/ms/guide/index.md +64 -0
- package/docs/ms/guide/natural-scale.md +123 -0
- package/docs/ms/guide/philosophy.md +103 -0
- package/docs/ms/guide/responsive.md +129 -0
- package/docs/ms/guide/states.md +162 -0
- package/docs/ms/guide/tri-attribute.md +187 -0
- package/docs/ms/index.md +64 -0
- package/docs/ms/reference/breakpoints.md +131 -0
- package/docs/ms/reference/colors.md +126 -0
- package/docs/ms/reference/layout.md +115 -0
- package/docs/ms/reference/space.md +121 -0
- package/docs/ms/reference/spacing.md +74 -0
- package/docs/ms/reference/visual.md +160 -0
- package/package.json +1 -1
- package/src/cdn/jit.js +38 -8
- package/src/compiler/generators/css.js +57 -5
- package/src/compiler/tokenizer.js +1 -1
- package/src/config/defaults.js +6 -0
- package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js +0 -9719
- package/docs/.vitepress/cache/deps/chunk-2CLQ7TTZ.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +0 -1333
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +0 -1665
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js +0 -1813
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +0 -7
- package/docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.BTWwOmXN.js +0 -1
- package/docs/.vitepress/dist/assets/chunks/VPLocalSearchBox.B-RMQ_ux.js +0 -9
- package/docs/.vitepress/dist/assets/chunks/framework.qISVh_QZ.js +0 -19
- package/docs/.vitepress/dist/assets/chunks/theme.B37_rtT6.js +0 -2
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Hover & Keadaan
|
|
2
|
+
|
|
3
|
+
Tambah gaya interaktif dengan prefiks keadaan.
|
|
4
|
+
|
|
5
|
+
## Prefiks Keadaan
|
|
6
|
+
|
|
7
|
+
| Prefiks | Pencetus |
|
|
8
|
+
|---------|----------|
|
|
9
|
+
| `hover:` | Tetikus atas elemen |
|
|
10
|
+
| `focus:` | Elemen mempunyai fokus |
|
|
11
|
+
| `active:` | Elemen sedang diklik |
|
|
12
|
+
| `disabled:` | Elemen adalah disabled |
|
|
13
|
+
|
|
14
|
+
## Penggunaan Asas
|
|
15
|
+
|
|
16
|
+
### Hover
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<button visual="bg:primary hover:bg:[#2563EB] text:white">
|
|
20
|
+
Hover saya
|
|
21
|
+
</button>
|
|
22
|
+
|
|
23
|
+
<a visual="text:grey hover:text:primary">
|
|
24
|
+
Pautan dengan warna hover
|
|
25
|
+
</a>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Focus
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<input
|
|
32
|
+
visual="border:grey focus:border:primary"
|
|
33
|
+
space="p:small"
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Active
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<button visual="bg:primary active:bg:[#1D4ED8]">
|
|
41
|
+
Klik saya
|
|
42
|
+
</button>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Disabled
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<button visual="bg:primary disabled:bg:grey disabled:opacity:[0.5]">
|
|
49
|
+
Hantar
|
|
50
|
+
</button>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Corak Biasa
|
|
54
|
+
|
|
55
|
+
### Butang dengan Keadaan
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<button
|
|
59
|
+
space="p-x:big p-y:small"
|
|
60
|
+
visual="
|
|
61
|
+
bg:primary
|
|
62
|
+
text:white
|
|
63
|
+
rounded:medium
|
|
64
|
+
hover:bg:[#2563EB]
|
|
65
|
+
active:bg:[#1D4ED8]
|
|
66
|
+
disabled:bg:grey
|
|
67
|
+
disabled:opacity:[0.5]
|
|
68
|
+
"
|
|
69
|
+
>
|
|
70
|
+
Hantar
|
|
71
|
+
</button>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Kad dengan Kesan Hover
|
|
75
|
+
|
|
76
|
+
```html
|
|
77
|
+
<div
|
|
78
|
+
layout="flex col"
|
|
79
|
+
space="p:medium"
|
|
80
|
+
visual="
|
|
81
|
+
bg:white
|
|
82
|
+
rounded:big
|
|
83
|
+
shadow:small
|
|
84
|
+
hover:shadow:big
|
|
85
|
+
"
|
|
86
|
+
>
|
|
87
|
+
<h3>Tajuk Kad</h3>
|
|
88
|
+
<p>Kandungan kad yang terangkat apabila hover.</p>
|
|
89
|
+
</div>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Navigasi Pautan
|
|
93
|
+
|
|
94
|
+
```html
|
|
95
|
+
<nav layout="flex" space="g:medium">
|
|
96
|
+
<a visual="text:dark hover:text:primary font:medium">Laman Utama</a>
|
|
97
|
+
<a visual="text:grey hover:text:primary">Tentang</a>
|
|
98
|
+
<a visual="text:grey hover:text:primary">Hubungi</a>
|
|
99
|
+
</nav>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Input dengan Cincin Fokus
|
|
103
|
+
|
|
104
|
+
```html
|
|
105
|
+
<input
|
|
106
|
+
type="text"
|
|
107
|
+
space="p:small w:[100%]"
|
|
108
|
+
visual="
|
|
109
|
+
border:grey
|
|
110
|
+
border-w:[1px]
|
|
111
|
+
rounded:small
|
|
112
|
+
focus:border:primary
|
|
113
|
+
"
|
|
114
|
+
placeholder="Masukkan emel anda"
|
|
115
|
+
/>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Butang Toggle
|
|
119
|
+
|
|
120
|
+
```html
|
|
121
|
+
<button
|
|
122
|
+
space="p:small"
|
|
123
|
+
visual="
|
|
124
|
+
bg:light
|
|
125
|
+
text:dark
|
|
126
|
+
rounded:medium
|
|
127
|
+
hover:bg:grey
|
|
128
|
+
active:bg:dark
|
|
129
|
+
active:text:white
|
|
130
|
+
"
|
|
131
|
+
>
|
|
132
|
+
Toggle
|
|
133
|
+
</button>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Menggabungkan dengan Responsif
|
|
137
|
+
|
|
138
|
+
Keadaan boleh digabungkan dengan prefiks responsif:
|
|
139
|
+
|
|
140
|
+
```html
|
|
141
|
+
<button visual="
|
|
142
|
+
bg:primary
|
|
143
|
+
hover:bg:[#2563EB]
|
|
144
|
+
tab:hover:shadow:big
|
|
145
|
+
">
|
|
146
|
+
Bayang hover hanya pada tablet+
|
|
147
|
+
</button>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Nota Kebolehcapaian
|
|
151
|
+
|
|
152
|
+
Sentiasa pastikan kontras warna yang mencukupi untuk keadaan hover dan focus. Keadaan `:focus` terutamanya penting untuk navigasi papan kekunci.
|
|
153
|
+
|
|
154
|
+
```html
|
|
155
|
+
<button visual="
|
|
156
|
+
bg:primary
|
|
157
|
+
text:white
|
|
158
|
+
focus:shadow:[0_0_0_3px_rgba(59,130,246,0.5)]
|
|
159
|
+
">
|
|
160
|
+
Cincin fokus yang boleh diakses
|
|
161
|
+
</button>
|
|
162
|
+
```
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Sintaksis Tri-Atribusi
|
|
2
|
+
|
|
3
|
+
SenangStart mengasingkan aspek stail kepada tiga atribusi yang berbeza.
|
|
4
|
+
|
|
5
|
+
## Gambaran Keseluruhan
|
|
6
|
+
|
|
7
|
+
| Atribusi | Tujuan | Contoh |
|
|
8
|
+
|---------|--------|--------|
|
|
9
|
+
| `layout` | Struktur & kedudukan | `layout="flex col center"` |
|
|
10
|
+
| `space` | Saiz & jarak | `space="p:medium g:small"` |
|
|
11
|
+
| `visual` | Warna & penampilan | `visual="bg:white rounded:big"` |
|
|
12
|
+
|
|
13
|
+
## Mengapa Tiga Atribusi?
|
|
14
|
+
|
|
15
|
+
### Kelas CSS tradisional adalah huru-hara:
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<div class="flex flex-col items-center p-4 gap-2 bg-white rounded-lg shadow-md">
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Semua bercampur aduk. Mana layout? Mana spacing? Mana visual?
|
|
22
|
+
|
|
23
|
+
### SenangStart adalah teratur:
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<div
|
|
27
|
+
layout="flex col center"
|
|
28
|
+
space="p:medium g:small"
|
|
29
|
+
visual="bg:white rounded:big shadow:medium"
|
|
30
|
+
>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Pengasingan jelas.** Sesiapa yang baca kod ini terus tahu:
|
|
34
|
+
- **Struktur:** Flexbox column, di tengah
|
|
35
|
+
- **Saiz:** Medium padding, small gap
|
|
36
|
+
- **Penampilan:** Putih, bulat, berlorek
|
|
37
|
+
|
|
38
|
+
## Atribusi `layout`
|
|
39
|
+
|
|
40
|
+
Mengawal **bagaimana elemen diposisikan** dan **bagaimana ia mengalir**.
|
|
41
|
+
|
|
42
|
+
### Jenis Paparan
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<div layout="flex">Kontena Flexbox</div>
|
|
46
|
+
<div layout="grid">Kontena Grid</div>
|
|
47
|
+
<div layout="block">Elemen Block</div>
|
|
48
|
+
<div layout="hidden">Elemen Tersembunyi</div>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Arah Flex
|
|
52
|
+
|
|
53
|
+
```html
|
|
54
|
+
<div layout="flex row">Horizontal (lalai)</div>
|
|
55
|
+
<div layout="flex col">Menegak</div>
|
|
56
|
+
<div layout="flex row-reverse">Horizontal terbalik</div>
|
|
57
|
+
<div layout="flex col-reverse">Menegak terbalik</div>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Penjajaran
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<div layout="flex center">Tengah kedua-dua paksi</div>
|
|
64
|
+
<div layout="flex between">Jarak antara item</div>
|
|
65
|
+
<div layout="flex start">Jajar ke permulaan</div>
|
|
66
|
+
<div layout="flex end">Jajar ke hujung</div>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Kedudukan
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<nav layout="fixed z:top">Navigasi Fixed</nav>
|
|
73
|
+
<div layout="sticky">Elemen Sticky</div>
|
|
74
|
+
<div layout="absolute z:high">Absolute positioned</div>
|
|
75
|
+
<div layout="relative">Relative positioned</div>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Atribusi `space`
|
|
79
|
+
|
|
80
|
+
Mengawal **saiz dan jarak** menggunakan skala semula jadi.
|
|
81
|
+
|
|
82
|
+
### Sintaksis
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
[breakpoint]:[property]:[scale]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Padding
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<div space="p:medium">Semua sisi</div>
|
|
92
|
+
<div space="p-x:big p-y:small">Horizontal & menegak</div>
|
|
93
|
+
<div space="p-t:small p-b:big">Atas & bawah</div>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Margin
|
|
97
|
+
|
|
98
|
+
```html
|
|
99
|
+
<div space="m:medium">Semua sisi</div>
|
|
100
|
+
<div space="m-b:big">Bawah sahaja</div>
|
|
101
|
+
<div space="m-x:auto">Tengah secara horizontal</div>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Sela (Flex/Grid)
|
|
105
|
+
|
|
106
|
+
```html
|
|
107
|
+
<div layout="flex" space="g:small">Small gap</div>
|
|
108
|
+
<div layout="grid" space="g:medium">Medium gap</div>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Saiz
|
|
112
|
+
|
|
113
|
+
```html
|
|
114
|
+
<div space="w:[100%] h:[400px]">Saiz eksplisit</div>
|
|
115
|
+
<div space="max-w:[1200px] min-h:[80vh]">Kekangan</div>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Nilai Arbitrari (Escape Hatch)
|
|
119
|
+
|
|
120
|
+
Guna kurungan untuk nilai spesifik:
|
|
121
|
+
|
|
122
|
+
```html
|
|
123
|
+
<div space="w:[350px]">Lebar 350px</div>
|
|
124
|
+
<div space="p:[20px_40px]">20px atas/bawah, 40px kiri/kanan</div>
|
|
125
|
+
<div space="m-t:[5rem]">5rem margin atas</div>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Atribusi `visual`
|
|
129
|
+
|
|
130
|
+
Mengawal **warna, tekstur, dan penampilan**.
|
|
131
|
+
|
|
132
|
+
### Latar Belakang
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<div visual="bg:white">Latar belakang putih</div>
|
|
136
|
+
<div visual="bg:primary">Warna primary</div>
|
|
137
|
+
<div visual="bg:[#FF5733]">Hex tersuai</div>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Teks
|
|
141
|
+
|
|
142
|
+
```html
|
|
143
|
+
<span visual="text:dark">Teks gelap</span>
|
|
144
|
+
<span visual="text:grey text-size:small">Kelabu, teks kecil</span>
|
|
145
|
+
<span visual="font:bold">Teks tebal</span>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Sempadan & Bayang
|
|
149
|
+
|
|
150
|
+
```html
|
|
151
|
+
<div visual="rounded:medium shadow:big">Bulat dengan bayang</div>
|
|
152
|
+
<div visual="border:grey border-w:[2px]">Sempadan kelabu</div>
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Menggabungkan Sari Diri
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<div visual="bg:white rounded:big shadow:medium text:dark">
|
|
159
|
+
Kad dengan pelbagai visual properties
|
|
160
|
+
</div>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Menggabungkan Ketiga-tiga
|
|
164
|
+
|
|
165
|
+
Berikut contoh lengkap:
|
|
166
|
+
|
|
167
|
+
```html
|
|
168
|
+
<div
|
|
169
|
+
layout="flex col"
|
|
170
|
+
space="w:[320px] p:medium g:small"
|
|
171
|
+
visual="bg:white rounded:big shadow:medium"
|
|
172
|
+
>
|
|
173
|
+
<h2 visual="font:bold text-size:big text:dark">Tajuk Kad</h2>
|
|
174
|
+
<p visual="text:grey">Penerangan kad di sini.</p>
|
|
175
|
+
<button
|
|
176
|
+
space="p-x:big p-y:small"
|
|
177
|
+
visual="bg:primary text:white rounded:medium"
|
|
178
|
+
>
|
|
179
|
+
Tindakan
|
|
180
|
+
</button>
|
|
181
|
+
</div>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Membaca kod ini:**
|
|
185
|
+
- Kontena adalah flex column menegak, lebar 320px, dengan medium padding, small gap, latar belakang putih, sudut bulat big, dan bayang medium
|
|
186
|
+
- Tajuk adalah bold, teks big, warna dark
|
|
187
|
+
- Butang mempunyai big horizontal padding, small vertical padding, latar belakang primary, teks putih, sudut bulat medium
|
package/docs/ms/index.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: home
|
|
3
|
+
|
|
4
|
+
hero:
|
|
5
|
+
name: SenangStart CSS
|
|
6
|
+
text: Enjin CSS Niat Nan Utama
|
|
7
|
+
tagline: Cakap Manusia. Kompil ke Logik.
|
|
8
|
+
image:
|
|
9
|
+
src: https://senangstart.com/img/use_senangstart.svg
|
|
10
|
+
alt: SenangStart CSS
|
|
11
|
+
actions:
|
|
12
|
+
- theme: brand
|
|
13
|
+
text: Bermula
|
|
14
|
+
link: /ms/guide/getting-started
|
|
15
|
+
- theme: alt
|
|
16
|
+
text: Lihat di GitHub
|
|
17
|
+
link: https://github.com/bookklik-technologies/senangstart-css
|
|
18
|
+
|
|
19
|
+
features:
|
|
20
|
+
- icon: 🧠
|
|
21
|
+
title: Bahasa Semula Jadi
|
|
22
|
+
details: Guna tiny, small, medium, big, giant, vast — perkataan yang anda sudah tahu. Tak perlu hafal px-4, px-8, px-16.
|
|
23
|
+
- icon: 🎯
|
|
24
|
+
title: Pengasingan Tanggungjawab
|
|
25
|
+
details: layout untuk struktur, space untuk saiz, visual untuk penampilan. Bersih, semantik, mudah diselenggara.
|
|
26
|
+
- icon: 🤖
|
|
27
|
+
title: Mesra AI
|
|
28
|
+
details: Menghasilkan fail konteks untuk LLM. Cakap "ketatkan" dan AI tahu untuk kurangkan jarak.
|
|
29
|
+
- icon: ⚡
|
|
30
|
+
title: Pilihan Tanpa Bina
|
|
31
|
+
details: Guna CDN JIT runtime untuk stail serta-merta. Tiada langkah bina diperlukan untuk prototaip.
|
|
32
|
+
- icon: 📱
|
|
33
|
+
title: Responsif Secara Rekaan
|
|
34
|
+
details: Titik Henti mobile-first dengan prefiks intuitif seperti mob:, tab:, lap:, desk:.
|
|
35
|
+
- icon: 🎨
|
|
36
|
+
title: Boleh Disesuaikan Sepenuhnya
|
|
37
|
+
details: Tindih ganti mana-mana skala, tambah warna tersuai, lanjutkan tema untuk padankan jenama anda.
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
<style>
|
|
41
|
+
:root {
|
|
42
|
+
--vp-home-hero-name-color: transparent;
|
|
43
|
+
--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #2563EB 30%, #3B82F6);
|
|
44
|
+
--vp-home-hero-image-background-image: linear-gradient(-45deg, #2563EB 50%, #3B82F6 50%);
|
|
45
|
+
--vp-home-hero-image-filter: blur(44px);
|
|
46
|
+
--vp-c-brand-1: #2563EB;
|
|
47
|
+
--vp-c-brand-2: #3B82F6;
|
|
48
|
+
--vp-c-brand-3: #DBEAFE;
|
|
49
|
+
}
|
|
50
|
+
</style>
|
|
51
|
+
|
|
52
|
+
## Contoh Pantas
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<div
|
|
56
|
+
layout="flex col center"
|
|
57
|
+
space="p:big"
|
|
58
|
+
visual="bg:primary text:white rounded:big"
|
|
59
|
+
>
|
|
60
|
+
Hello SenangStart!
|
|
61
|
+
</div>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Ini mencipta flexbox column, di tengah, dengan padding big, latar belakang primary, teks putih, dan sudut bulat big. **Tiada kelas CSS untuk dihafal.**
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Rujukan Titik Henti
|
|
2
|
+
|
|
3
|
+
Rujukan lengkap untuk breakpoint responsif.
|
|
4
|
+
|
|
5
|
+
## Titik Henti Lalai
|
|
6
|
+
|
|
7
|
+
| Prefiks | Min-Width | Sasaran Peranti |
|
|
8
|
+
|---------|-----------|-----------------|
|
|
9
|
+
| (tiada) | 0px | Mudah alih (lalai) |
|
|
10
|
+
| `mob:` | 480px | Mudah alih besar |
|
|
11
|
+
| `tab:` | 768px | Tablet |
|
|
12
|
+
| `lap:` | 1024px | Komputer riba |
|
|
13
|
+
| `desk:` | 1280px | Desktop |
|
|
14
|
+
|
|
15
|
+
## Media Query CSS
|
|
16
|
+
|
|
17
|
+
```css
|
|
18
|
+
/* Mobile first - tiada prefiks diperlukan */
|
|
19
|
+
|
|
20
|
+
@media (min-width: 480px) { /* mob: */ }
|
|
21
|
+
@media (min-width: 768px) { /* tab: */ }
|
|
22
|
+
@media (min-width: 1024px) { /* lap: */ }
|
|
23
|
+
@media (min-width: 1280px) { /* desk: */ }
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Penggunaan
|
|
27
|
+
|
|
28
|
+
### Jarak Responsif
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<div space="p:small tab:p:medium lap:p:big">
|
|
32
|
+
Padding progresif
|
|
33
|
+
</div>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Layout Responsif
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<div layout="flex col tab:row">
|
|
40
|
+
Column pada mudah alih, row pada tablet+
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<nav layout="hidden tab:flex">
|
|
44
|
+
Tersembunyi pada mudah alih, kelihatan pada tablet+
|
|
45
|
+
</nav>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Tipografi Responsif
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<h1 visual="text-size:big tab:text-size:giant lap:text-size:vast">
|
|
52
|
+
Tajuk responsif
|
|
53
|
+
</h1>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Pendekatan Mobile-First
|
|
57
|
+
|
|
58
|
+
SenangStart menggunakan reka bentuk responsif mobile-first:
|
|
59
|
+
|
|
60
|
+
1. **Gaya asas** digunakan untuk semua saiz skrin
|
|
61
|
+
2. **Prefiks breakpoint** digunakan dari breakpoint itu KE ATAS
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<!-- Ini bermaksud: -->
|
|
65
|
+
<!-- - Mudah alih: small padding -->
|
|
66
|
+
<!-- - Tablet dan ke atas: medium padding -->
|
|
67
|
+
<!-- - Laptop dan ke atas: big padding -->
|
|
68
|
+
<div space="p:small tab:p:medium lap:p:big">
|
|
69
|
+
Kandungan
|
|
70
|
+
</div>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Penyesuaian
|
|
74
|
+
|
|
75
|
+
Tambah atau ubah breakpoint dalam `senangstart.config.js`:
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
export default {
|
|
79
|
+
theme: {
|
|
80
|
+
screens: {
|
|
81
|
+
'mob': '480px',
|
|
82
|
+
'tab': '768px',
|
|
83
|
+
'lap': '1024px',
|
|
84
|
+
'desk': '1280px',
|
|
85
|
+
'wide': '1536px', // Tambah lebih lebar
|
|
86
|
+
'ultra': '1920px' // Tambah ultra-wide
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Guna breakpoint tersuai:
|
|
93
|
+
|
|
94
|
+
```html
|
|
95
|
+
<div space="desk:p:big wide:p:giant ultra:p:vast">
|
|
96
|
+
Padding skrin besar
|
|
97
|
+
</div>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Corak Biasa
|
|
101
|
+
|
|
102
|
+
### Tunjuk/Sembunyi Elemen
|
|
103
|
+
|
|
104
|
+
```html
|
|
105
|
+
<!-- Mudah alih sahaja -->
|
|
106
|
+
<div layout="block tab:hidden">Menu mudah alih</div>
|
|
107
|
+
|
|
108
|
+
<!-- Desktop sahaja -->
|
|
109
|
+
<div layout="hidden lap:block">Sidebar desktop</div>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Grid Responsif
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<div
|
|
116
|
+
layout="grid"
|
|
117
|
+
space="g:small tab:g:medium"
|
|
118
|
+
style="grid-template-columns: 1fr;
|
|
119
|
+
@media (min-width: 768px) { grid-template-columns: repeat(2, 1fr); }"
|
|
120
|
+
>
|
|
121
|
+
Kad...
|
|
122
|
+
</div>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Kontena Responsif
|
|
126
|
+
|
|
127
|
+
```html
|
|
128
|
+
<div space="p:small tab:p:medium lap:p:big max-w:[1200px] m-x:auto">
|
|
129
|
+
Kontena di tengah dengan padding responsif
|
|
130
|
+
</div>
|
|
131
|
+
```
|